Move some heavy lifting into new ingest_video.
This commit is contained in:
parent
ce028e4ebb
commit
dfa5bb2390
2 changed files with 30 additions and 7 deletions
|
@ -48,13 +48,7 @@ class Channel(Base):
|
||||||
video_generator = self.ycdldb.youtube.get_playlist_videos(self.uploads_playlist)
|
video_generator = self.ycdldb.youtube.get_playlist_videos(self.uploads_playlist)
|
||||||
for video in video_generator:
|
for video in video_generator:
|
||||||
seen_ids.add(video.id)
|
seen_ids.add(video.id)
|
||||||
status = self.ycdldb.insert_video(video, commit=False)
|
status = self.ycdldb.ingest_video(video, commit=False)
|
||||||
|
|
||||||
video = status['video']
|
|
||||||
if status['new'] and self.automark not in [None, "pending"]:
|
|
||||||
if self.automark == 'downloaded':
|
|
||||||
self.ycdldb.download_video(video.id, commit=False)
|
|
||||||
video.mark_state(self.automark, commit=False)
|
|
||||||
|
|
||||||
if not (force or status['new']):
|
if not (force or status['new']):
|
||||||
break
|
break
|
||||||
|
|
|
@ -326,6 +326,35 @@ class YCDLDBVideoMixin:
|
||||||
|
|
||||||
return results
|
return results
|
||||||
|
|
||||||
|
def ingest_video(self, video, commit=True):
|
||||||
|
'''
|
||||||
|
Call `insert_video`, and additionally use the channel's automark to
|
||||||
|
mark this video's state.
|
||||||
|
'''
|
||||||
|
status = self.insert_video(video, commit=False)
|
||||||
|
|
||||||
|
if not status['new']:
|
||||||
|
return status
|
||||||
|
|
||||||
|
video = status['video']
|
||||||
|
author = video.author
|
||||||
|
|
||||||
|
if not author:
|
||||||
|
return status
|
||||||
|
|
||||||
|
if author.automark in [None, 'pending']:
|
||||||
|
return status
|
||||||
|
|
||||||
|
if author.automark == 'downloaded':
|
||||||
|
self.download_video(video.id, commit=False)
|
||||||
|
|
||||||
|
video.mark_state(author.automark, commit=False)
|
||||||
|
|
||||||
|
if commit:
|
||||||
|
self.commit()
|
||||||
|
|
||||||
|
return status
|
||||||
|
|
||||||
def insert_video(self, video, *, add_channel=True, commit=True):
|
def insert_video(self, video, *, add_channel=True, commit=True):
|
||||||
if not isinstance(video, ytapi.Video):
|
if not isinstance(video, ytapi.Video):
|
||||||
video = self.youtube.get_video(video)
|
video = self.youtube.get_video(video)
|
||||||
|
|
Loading…
Reference in a new issue