Extraction: Move playlist extraction to yt_data_extract

This commit is contained in:
James Taylor
2019-09-08 18:42:08 -07:00
parent c362a5e834
commit 89e5761f8d
3 changed files with 38 additions and 19 deletions

View File

@@ -89,28 +89,20 @@ def get_playlist_page():
)
gevent.joinall(tasks)
first_page_json, this_page_json = tasks[0].value, tasks[1].value
try: # first page
video_list = this_page_json['response']['contents']['singleColumnBrowseResultsRenderer']['tabs'][0]['tabRenderer']['content']['sectionListRenderer']['contents'][0]['itemSectionRenderer']['contents'][0]['playlistVideoListRenderer']['contents']
except KeyError: # other pages
video_list = this_page_json['response']['continuationContents']['playlistVideoListContinuation']['contents']
parsed_video_list = [yt_data_extract.parse_info_prepare_for_html(video_json) for video_json in video_list]
info = yt_data_extract.extract_playlist_info(this_page_json)
if page != '1':
info['metadata'] = yt_data_extract.extract_playlist_metadata(first_page_json)
metadata = yt_data_extract.renderer_info(first_page_json['response']['header'])
yt_data_extract.prefix_urls(metadata)
if 'description' not in metadata:
metadata['description'] = ''
video_count = int(metadata['size'].replace(',', ''))
metadata['size'] += ' videos'
yt_data_extract.prefix_urls(info['metadata'])
for item in info['items']:
yt_data_extract.prefix_urls(item)
yt_data_extract.add_extra_html_info(item)
return flask.render_template('playlist.html',
video_list = parsed_video_list,
num_pages = math.ceil(video_count/20),
video_list = info['items'],
num_pages = math.ceil(info['metadata']['size']/20),
parameters_dictionary = request.args,
**metadata
**info['metadata']
).encode('utf-8')