From cefd4ed7d6db2f1384dd8f9080f746b702076657 Mon Sep 17 00:00:00 2001 From: TheErrorExe <161362055+TheErrorExe@users.noreply.github.com> Date: Thu, 26 Dec 2024 16:13:59 +0100 Subject: [PATCH] Video Duration added --- revivetube.py | 164 +++++++++++++++++++++++++++----------------------- 1 file changed, 89 insertions(+), 75 deletions(-) diff --git a/revivetube.py b/revivetube.py index 8758291..0505e22 100644 --- a/revivetube.py +++ b/revivetube.py @@ -187,70 +187,76 @@ INDEX_TEMPLATE = """ ReviveTube by ReviveMii - +

ReviveTube by ReviveMii

@@ -268,6 +274,7 @@ INDEX_TEMPLATE = """ {{ video['title'] }}
{{ video['title'] }}
By: {{ video['uploader'] }}
+
Duration: {{ video['duration'] }}
{% endfor %} @@ -445,7 +452,7 @@ def get_video_comments(video_id, max_results=20): } try: - response = requests.get("https://www.googleapis.com/youtube/v3/commentThreads", params=params, timeout=1) + response = requests.get("https://www.googleapis.com/youtube/v3/commentThreads", params=params, timeout=3) response.raise_for_status() data = response.json() @@ -506,30 +513,37 @@ def index(): results = None if query: - - response = requests.get(f"{API_BASE_URL}search?q={query}", timeout=3) + response = requests.get(f"https://y.com.sb/api/v1/search?q={query}", timeout=3) try: - data = response.json() + data = response.json() except ValueError: return "Fehler beim Parsen der API-Antwort.", 500 if response.status_code == 200 and isinstance(data, list): results = [ { - "id": entry.get("videoId"), - "title": entry.get("title"), - "uploader": entry.get("author", "Unbekannt"), + "id": entry.get("videoId"), + "title": entry.get("title"), + "uploader": entry.get("author", "Unbekannt"), "thumbnail": f"/thumbnail/{entry['videoId']}", - "viewCount": entry.get("viewCountText", "Unbekannt"), - "published": entry.get("publishedText", "Unbekannt") + "viewCount": entry.get("viewCountText", "Unbekannt"), + "published": entry.get("publishedText", "Unbekannt"), + "duration": format_duration(entry.get("lengthSeconds", 0)) # Video Dauer formatiert } - for entry in data - if entry.get("videoId") + for entry in data + if entry.get("videoId") ] else: return "Keine Ergebnisse gefunden oder Fehler in der API-Antwort.", 404 return render_template_string(INDEX_TEMPLATE, results=results) + +def format_duration(seconds): + """Formatiert die Dauer von Sekunden in Minuten:Sekunden.""" + minutes = seconds // 60 + seconds = seconds % 60 + return f"{minutes}:{str(seconds).zfill(2)}" + def get_video_duration_from_file(video_path): """ Holt die Dauer eines Videos aus der Datei (FLV oder MP4) mithilfe von ffprobe.