From daa15c05775bf80ff6d342de1777736e9a2cae7c Mon Sep 17 00:00:00 2001 From: Simon Date: Sat, 15 Nov 2025 22:46:02 +0700 Subject: [PATCH] add missing local playlist downloaded match, #1092 --- backend/download/src/yt_dlp_handler.py | 3 ++- backend/playlist/src/index.py | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/backend/download/src/yt_dlp_handler.py b/backend/download/src/yt_dlp_handler.py index 78e50511..a5702a4f 100644 --- a/backend/download/src/yt_dlp_handler.py +++ b/backend/download/src/yt_dlp_handler.py @@ -40,7 +40,7 @@ class DownloaderBase: PLAYLIST_QUICK = "download:playlist:quick" VIDEO_QUEUE = "download:video" - def __init__(self, task): + def __init__(self, task=None): self.task = task self.config = AppConfig().config self.channel_overwrites = get_channel_overwrites() @@ -467,6 +467,7 @@ class DownloadPostProcess(DownloaderBase): playlist.get_from_es() playlist.add_vids_to_playlist() playlist.remove_vids_from_playlist() + playlist.match_local() if not self.task: continue diff --git a/backend/playlist/src/index.py b/backend/playlist/src/index.py index a30b4244..d2e6e301 100644 --- a/backend/playlist/src/index.py +++ b/backend/playlist/src/index.py @@ -197,6 +197,31 @@ class YoutubePlaylist(YouTubeItem): if status_code == 200: print(f"{self.youtube_id}: removed {video_id} from playlist") + def match_local(self): + """match local videos as indexed""" + ids = [i["youtube_id"] for i in self.json_data["playlist_entries"]] + data = { + "query": {"terms": {"youtube_id": ids}}, + "_source": ["youtube_id", "title", "channel.channel_name"], + } + local_vids = IndexPaginate("ta_video", data).get_results() + indexed_vids = {i["youtube_id"]: i for i in local_vids} + + new_entries = [] + for entry in self.json_data["playlist_entries"]: + if local_vid := indexed_vids.get(entry["youtube_id"]): + entry.update( + { + "title": local_vid["title"], + "uploader": local_vid["channel"]["channel_name"], + "downloaded": True, + } + ) + new_entries.append(entry) + + self.json_data["playlist_entries"] = new_entries + self.upload_to_es() + def update_playlist(self, skip_on_empty=False): """update metadata for playlist with data from YouTube""" self.build_json(scrape=True)