diff --git a/tubearchivist/home/src/index/video.py b/tubearchivist/home/src/index/video.py index acf097f..fa2b0f9 100644 --- a/tubearchivist/home/src/index/video.py +++ b/tubearchivist/home/src/index/video.py @@ -12,6 +12,7 @@ import requests from django.conf import settings from home.src.es.connect import ElasticWrap from home.src.index import channel as ta_channel +from home.src.index import playlist as ta_playlist from home.src.index.generic import YouTubeItem from home.src.ta.helper import ( DurationConverter, @@ -561,6 +562,7 @@ class YoutubeVideo(YouTubeItem, YoutubeSubtitle): def delete_media_file(self): """delete video file, meta data""" + print(f"{self.youtube_id}: delete video") self.get_from_es() video_base = self.app_conf["videos"] media_url = self.json_data.get("media_url") @@ -570,9 +572,28 @@ class YoutubeVideo(YouTubeItem, YoutubeSubtitle): except FileNotFoundError: print(f"{self.youtube_id}: failed {media_url}, continue.") + self.del_in_playlists() self.del_in_es() self.delete_subtitles() + def del_in_playlists(self): + """remove downloaded in playlist""" + all_playlists = self.json_data.get("playlist") + if not all_playlists: + return + + for playlist_id in all_playlists: + print(f"{playlist_id}: delete video {self.youtube_id}") + playlist = ta_playlist.YoutubePlaylist(playlist_id) + playlist.get_from_es() + entries = playlist.json_data["playlist_entries"] + for idx, entry in enumerate(entries): + if entry["youtube_id"] == self.youtube_id: + playlist.json_data["playlist_entries"][idx].update( + {"downloaded": False} + ) + playlist.upload_to_es() + def delete_subtitles(self): """delete indexed subtitles""" print(f"{self.youtube_id}: delete subtitles")