From b89d90a0d35a239ee4eb476eaf5e2d3404fe65ea Mon Sep 17 00:00:00 2001 From: James Taylor Date: Sun, 7 Jul 2019 17:29:25 -0700 Subject: watch_page: refactor music list into flask template --- youtube/templates/watch.html | 21 ++++++++++++++++-- youtube/watch.py | 53 ++++++++++++-------------------------------- 2 files changed, 33 insertions(+), 41 deletions(-) diff --git a/youtube/templates/watch.html b/youtube/templates/watch.html index 122958c..85c87ae 100644 --- a/youtube/templates/watch.html +++ b/youtube/templates/watch.html @@ -185,14 +185,31 @@ {{ format['resolution'] }} {{ format['note'] }} -{% endfor %} +{% endfor %} {{ description }}
-{{ music_list|safe }} + {% if music_list.__len__() != 0 %} +
+ + + + {% for attribute in music_attributes %} + + {% endfor %} + + {% for track in music_list %} + + {% for attribute in music_attributes %} + + {% endfor %} + + {% endfor %} +
Music
{{ attribute }}
{{ track.get(attribute.lower(), '') }}
+ {% endif %}
{{ comments|safe }} diff --git a/youtube/watch.py b/youtube/watch.py index 1f7a352..6a1a199 100644 --- a/youtube/watch.py +++ b/youtube/watch.py @@ -110,46 +110,20 @@ def get_subtitle_sources(info): return sources -def get_music_list_html(music_list): - if len(music_list) == 0: - music_list_html = '' - else: - # get the set of attributes which are used by atleast 1 track - # so there isn't an empty, extraneous album column which no tracks use, for example - used_attributes = set() - for track in music_list: - used_attributes = used_attributes | track.keys() - - # now put them in the right order - ordered_attributes = [] - for attribute in ('Artist', 'Title', 'Album'): - if attribute.lower() in used_attributes: - ordered_attributes.append(attribute) - - music_list_html = '''
- - - -''' - # table headings - for attribute in ordered_attributes: - music_list_html += "\n" - music_list_html += '''\n''' - - for track in music_list: - music_list_html += '''\n''' - for attribute in ordered_attributes: - try: - value = track[attribute.lower()] - except KeyError: - music_list_html += '''''' - else: - music_list_html += '''''' - music_list_html += '''\n''' - music_list_html += '''
Music
" + attribute + "
''' + html.escape(value) + '''
\n''' - return music_list_html +def get_ordered_music_list_attributes(music_list): + # get the set of attributes which are used by atleast 1 track + # so there isn't an empty, extraneous album column which no tracks use, for example + used_attributes = set() + for track in music_list: + used_attributes = used_attributes | track.keys() + # now put them in the right order + ordered_attributes = [] + for attribute in ('Artist', 'Title', 'Album'): + if attribute.lower() in used_attributes: + ordered_attributes.append(attribute) + return ordered_attributes def extract_info(downloader, *args, **kwargs): @@ -231,10 +205,11 @@ def get_watch_page(): video_sources = get_video_sources(info), subtitle_sources = get_subtitle_sources(info), related = related_videos, + music_list = info['music_list'], + music_attributes = get_ordered_music_list_attributes(info['music_list']), # TODO: refactor these comments = comments_html, - music_list = get_music_list_html(info['music_list']), title = info['title'], uploader = info['uploader'], -- cgit v1.2.3