Add method get_playlist_videos.
This commit is contained in:
parent
08ae8a9394
commit
1a7662b6bd
1 changed files with 13 additions and 7 deletions
|
@ -61,19 +61,14 @@ class Youtube:
|
||||||
user = self.youtube.channels().list(part='snippet', id=uid).execute()
|
user = self.youtube.channels().list(part='snippet', id=uid).execute()
|
||||||
return user['items'][0]['snippet']['title']
|
return user['items'][0]['snippet']['title']
|
||||||
|
|
||||||
def get_user_videos(self, username=None, uid=None):
|
def _iter_playlist(self, playlist_id):
|
||||||
if username:
|
|
||||||
user = self.youtube.channels().list(part='contentDetails', forUsername=username).execute()
|
|
||||||
else:
|
|
||||||
user = self.youtube.channels().list(part='contentDetails', id=uid).execute()
|
|
||||||
upload_playlist = user['items'][0]['contentDetails']['relatedPlaylists']['uploads']
|
|
||||||
page_token = None
|
page_token = None
|
||||||
while True:
|
while True:
|
||||||
response = self.youtube.playlistItems().list(
|
response = self.youtube.playlistItems().list(
|
||||||
maxResults=50,
|
maxResults=50,
|
||||||
pageToken=page_token,
|
pageToken=page_token,
|
||||||
part='contentDetails',
|
part='contentDetails',
|
||||||
playlistId=upload_playlist,
|
playlistId=playlist_id,
|
||||||
).execute()
|
).execute()
|
||||||
page_token = response.get('nextPageToken', None)
|
page_token = response.get('nextPageToken', None)
|
||||||
video_ids = [item['contentDetails']['videoId'] for item in response['items']]
|
video_ids = [item['contentDetails']['videoId'] for item in response['items']]
|
||||||
|
@ -86,6 +81,17 @@ class Youtube:
|
||||||
if page_token is None:
|
if page_token is None:
|
||||||
break
|
break
|
||||||
|
|
||||||
|
def get_playlist_videos(self, playlist_id):
|
||||||
|
yield from self._iter_playlist(playlist_id)
|
||||||
|
|
||||||
|
def get_user_videos(self, username=None, uid=None):
|
||||||
|
if username:
|
||||||
|
user = self.youtube.channels().list(part='contentDetails', forUsername=username).execute()
|
||||||
|
else:
|
||||||
|
user = self.youtube.channels().list(part='contentDetails', id=uid).execute()
|
||||||
|
upload_playlist_id = user['items'][0]['contentDetails']['relatedPlaylists']['uploads']
|
||||||
|
yield from self._iter_playlist(upload_playlist_id)
|
||||||
|
|
||||||
def get_related_videos(self, video_id, count=50):
|
def get_related_videos(self, video_id, count=50):
|
||||||
if isinstance(video_id, Video):
|
if isinstance(video_id, Video):
|
||||||
video_id = video_id.id
|
video_id = video_id.id
|
||||||
|
|
Loading…
Reference in a new issue