Create separate get_video/get_videos, plural looks better.
Not a big difference, but I didn't like the way calling get_video([...]) looked.
This commit is contained in:
parent
299ea6b579
commit
2da4568fb5
1 changed files with 14 additions and 14 deletions
|
@ -65,8 +65,9 @@ class Youtube:
|
||||||
playlistId=playlist_id,
|
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']]
|
||||||
videos = self.get_video(video_ids)
|
videos = self.get_videos(video_ids)
|
||||||
videos.sort(key=lambda x: x.published, reverse=True)
|
videos.sort(key=lambda x: x.published, reverse=True)
|
||||||
|
|
||||||
self.log.debug('Got %d more videos.', len(videos))
|
self.log.debug('Got %d more videos.', len(videos))
|
||||||
|
@ -87,9 +88,9 @@ class Youtube:
|
||||||
type='video',
|
type='video',
|
||||||
maxResults=count,
|
maxResults=count,
|
||||||
).execute()
|
).execute()
|
||||||
videos = []
|
|
||||||
related = [rel['id']['videoId'] for rel in results['items']]
|
related = [rel['id']['videoId'] for rel in results['items']]
|
||||||
videos = self.get_video(related)
|
videos = self.get_videos(related)
|
||||||
return videos
|
return videos
|
||||||
|
|
||||||
def get_user_id(self, username):
|
def get_user_id(self, username):
|
||||||
|
@ -113,16 +114,19 @@ class Youtube:
|
||||||
def get_user_videos(self, uid):
|
def get_user_videos(self, uid):
|
||||||
yield from self.get_playlist_videos(self.get_user_uploads_playlist_id(uid))
|
yield from self.get_playlist_videos(self.get_user_uploads_playlist_id(uid))
|
||||||
|
|
||||||
def get_video(self, video_ids):
|
def get_video(self, video_id):
|
||||||
if isinstance(video_ids, str):
|
videos = self.get_videos([video_id])
|
||||||
singular = True
|
|
||||||
video_ids = [video_ids]
|
|
||||||
else:
|
|
||||||
singular = False
|
|
||||||
|
|
||||||
|
if len(videos) == 1:
|
||||||
|
return videos[0]
|
||||||
|
elif len(videos) == 0:
|
||||||
|
raise VideoNotFound(video_id)
|
||||||
|
|
||||||
|
def get_videos(self, video_ids):
|
||||||
snippets = []
|
snippets = []
|
||||||
chunks = helpers.chunk_sequence(video_ids, 50)
|
chunks = helpers.chunk_sequence(video_ids, 50)
|
||||||
for chunk in chunks:
|
for chunk in chunks:
|
||||||
|
self.log.debug('Requesting batch of %d video ids.', len(chunk))
|
||||||
chunk = ','.join(chunk)
|
chunk = ','.join(chunk)
|
||||||
data = self.youtube.videos().list(
|
data = self.youtube.videos().list(
|
||||||
part='id,contentDetails,snippet,statistics',
|
part='id,contentDetails,snippet,statistics',
|
||||||
|
@ -130,6 +134,7 @@ class Youtube:
|
||||||
).execute()
|
).execute()
|
||||||
items = data['items']
|
items = data['items']
|
||||||
snippets.extend(items)
|
snippets.extend(items)
|
||||||
|
|
||||||
videos = []
|
videos = []
|
||||||
broken = []
|
broken = []
|
||||||
for snippet in snippets:
|
for snippet in snippets:
|
||||||
|
@ -141,9 +146,4 @@ class Youtube:
|
||||||
if broken:
|
if broken:
|
||||||
# print('broken:', broken)
|
# print('broken:', broken)
|
||||||
pass
|
pass
|
||||||
if singular:
|
|
||||||
if len(videos) == 1:
|
|
||||||
return videos[0]
|
|
||||||
elif len(videos) == 0:
|
|
||||||
raise VideoNotFound(video_ids[0])
|
|
||||||
return videos
|
return videos
|
||||||
|
|
Loading…
Reference in a new issue