If upload_playlist is not set during refresh, try to get it.
This is possible if a channel is temporarily suspended during the time you tried to fetch the playlist id originally.
This commit is contained in:
parent
41c6a344fa
commit
0cf422977b
1 changed files with 17 additions and 0 deletions
|
@ -38,6 +38,9 @@ class Channel(Base):
|
||||||
|
|
||||||
def refresh(self, force=False, commit=True):
|
def refresh(self, force=False, commit=True):
|
||||||
seen_ids = set()
|
seen_ids = set()
|
||||||
|
if not self.uploads_playlist:
|
||||||
|
self.uploads_playlist = self.ycdldb.youtube.get_user_uploads_playlist_id(self.id)
|
||||||
|
self.set_uploads_playlist_id(self.uploads_playlist)
|
||||||
video_generator = self.ycdldb.youtube.get_playlist_videos(self.uploads_playlist)
|
video_generator = self.ycdldb.youtube.get_playlist_videos(self.uploads_playlist)
|
||||||
self.ycdldb.log.debug('Refreshing channel: %s', self.id)
|
self.ycdldb.log.debug('Refreshing channel: %s', self.id)
|
||||||
for video in video_generator:
|
for video in video_generator:
|
||||||
|
@ -77,6 +80,20 @@ class Channel(Base):
|
||||||
if commit:
|
if commit:
|
||||||
self.ycdldb.commit()
|
self.ycdldb.commit()
|
||||||
|
|
||||||
|
def set_uploads_playlist_id(self, playlist_id, commit=True):
|
||||||
|
if not isinstance(playlist_id, str):
|
||||||
|
raise TypeError(f'Playlist id must be a string, not {type(playlist_id)}.')
|
||||||
|
|
||||||
|
pairs = {
|
||||||
|
'id': self.id,
|
||||||
|
'uploads_playlist': playlist_id,
|
||||||
|
}
|
||||||
|
self.ycdldb.sql_update(table='channels', pairs=pairs, where_key='id')
|
||||||
|
self.uploads_playlist = playlist_id
|
||||||
|
|
||||||
|
if commit:
|
||||||
|
self.ycdldb.commit()
|
||||||
|
|
||||||
class Video(Base):
|
class Video(Base):
|
||||||
table = 'videos'
|
table = 'videos'
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue