|
|
@ -8,7 +8,7 @@ import json
|
|
|
|
from datetime import datetime
|
|
|
|
from datetime import datetime
|
|
|
|
|
|
|
|
|
|
|
|
from home.src.download.thumbnails import ThumbManager
|
|
|
|
from home.src.download.thumbnails import ThumbManager
|
|
|
|
from home.src.es.connect import ElasticWrap
|
|
|
|
from home.src.es.connect import ElasticWrap, IndexPaginate
|
|
|
|
from home.src.index.generic import YouTubeItem
|
|
|
|
from home.src.index.generic import YouTubeItem
|
|
|
|
from home.src.index.video import YoutubeVideo
|
|
|
|
from home.src.index.video import YoutubeVideo
|
|
|
|
|
|
|
|
|
|
|
@ -28,7 +28,6 @@ class YoutubePlaylist(YouTubeItem):
|
|
|
|
super().__init__(youtube_id)
|
|
|
|
super().__init__(youtube_id)
|
|
|
|
self.all_members = False
|
|
|
|
self.all_members = False
|
|
|
|
self.nav = False
|
|
|
|
self.nav = False
|
|
|
|
self.all_youtube_ids = []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def build_json(self, scrape=False):
|
|
|
|
def build_json(self, scrape=False):
|
|
|
|
"""collection to create json_data"""
|
|
|
|
"""collection to create json_data"""
|
|
|
@ -45,7 +44,8 @@ class YoutubePlaylist(YouTubeItem):
|
|
|
|
return
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
|
|
self.process_youtube_meta()
|
|
|
|
self.process_youtube_meta()
|
|
|
|
self.get_entries()
|
|
|
|
ids_found = self.get_local_vids()
|
|
|
|
|
|
|
|
self.get_entries(ids_found)
|
|
|
|
self.json_data["playlist_entries"] = self.all_members
|
|
|
|
self.json_data["playlist_entries"] = self.all_members
|
|
|
|
self.json_data["playlist_subscribed"] = subscribed
|
|
|
|
self.json_data["playlist_subscribed"] = subscribed
|
|
|
|
|
|
|
|
|
|
|
@ -69,25 +69,31 @@ class YoutubePlaylist(YouTubeItem):
|
|
|
|
"playlist_type": "regular",
|
|
|
|
"playlist_type": "regular",
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
def get_entries(self, playlistend=False):
|
|
|
|
def get_local_vids(self) -> list[str]:
|
|
|
|
"""get all videos in playlist"""
|
|
|
|
"""get local video ids from youtube entries"""
|
|
|
|
if playlistend:
|
|
|
|
entries = self.youtube_meta["entries"]
|
|
|
|
# implement playlist end
|
|
|
|
data = {
|
|
|
|
print(playlistend)
|
|
|
|
"query": {"terms": {"youtube_id": [i["id"] for i in entries]}},
|
|
|
|
|
|
|
|
"_source": ["youtube_id"],
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
indexed_vids = IndexPaginate("ta_video", data).get_results()
|
|
|
|
|
|
|
|
ids_found = [i["youtube_id"] for i in indexed_vids]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return ids_found
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_entries(self, ids_found) -> None:
|
|
|
|
|
|
|
|
"""get all videos in playlist, match downloaded with ids_found"""
|
|
|
|
all_members = []
|
|
|
|
all_members = []
|
|
|
|
for idx, entry in enumerate(self.youtube_meta["entries"]):
|
|
|
|
for idx, entry in enumerate(self.youtube_meta["entries"]):
|
|
|
|
if self.all_youtube_ids:
|
|
|
|
|
|
|
|
downloaded = entry["id"] in self.all_youtube_ids
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
downloaded = False
|
|
|
|
|
|
|
|
if not entry["channel"]:
|
|
|
|
if not entry["channel"]:
|
|
|
|
continue
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
|
|
to_append = {
|
|
|
|
to_append = {
|
|
|
|
"youtube_id": entry["id"],
|
|
|
|
"youtube_id": entry["id"],
|
|
|
|
"title": entry["title"],
|
|
|
|
"title": entry["title"],
|
|
|
|
"uploader": entry["channel"],
|
|
|
|
"uploader": entry["channel"],
|
|
|
|
"idx": idx,
|
|
|
|
"idx": idx,
|
|
|
|
"downloaded": downloaded,
|
|
|
|
"downloaded": entry["id"] in ids_found,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
all_members.append(to_append)
|
|
|
|
all_members.append(to_append)
|
|
|
|
|
|
|
|
|
|
|
@ -130,14 +136,11 @@ class YoutubePlaylist(YouTubeItem):
|
|
|
|
|
|
|
|
|
|
|
|
def update_playlist(self):
|
|
|
|
def update_playlist(self):
|
|
|
|
"""update metadata for playlist with data from YouTube"""
|
|
|
|
"""update metadata for playlist with data from YouTube"""
|
|
|
|
self.get_from_es()
|
|
|
|
self.build_json(scrape=True)
|
|
|
|
subscribed = self.json_data["playlist_subscribed"]
|
|
|
|
|
|
|
|
self.get_from_youtube()
|
|
|
|
|
|
|
|
if not self.json_data:
|
|
|
|
if not self.json_data:
|
|
|
|
# return false to deactivate
|
|
|
|
# return false to deactivate
|
|
|
|
return False
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
|
|
self.json_data["playlist_subscribed"] = subscribed
|
|
|
|
|
|
|
|
self.upload_to_es()
|
|
|
|
self.upload_to_es()
|
|
|
|
return True
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
|
|