diff options
author | James Taylor <user234683@users.noreply.github.com> | 2018-07-08 18:38:06 -0700 |
---|---|---|
committer | James Taylor <user234683@users.noreply.github.com> | 2018-07-08 18:40:39 -0700 |
commit | 52835db0a83e071ffe72be80fa68445c370b47cb (patch) | |
tree | 1162c190d1ccfb5e5e86f1af2587728f4d03f115 /youtube/local_playlist.py | |
parent | f4024573dcbd4a19e7138814bbc54ac0a653f3d3 (diff) | |
download | yt-local-52835db0a83e071ffe72be80fa68445c370b47cb.tar.lz yt-local-52835db0a83e071ffe72be80fa68445c370b47cb.tar.xz yt-local-52835db0a83e071ffe72be80fa68445c370b47cb.zip |
add support for viewing local playlists
Diffstat (limited to 'youtube/local_playlist.py')
-rw-r--r-- | youtube/local_playlist.py | 74 |
1 files changed, 71 insertions, 3 deletions
diff --git a/youtube/local_playlist.py b/youtube/local_playlist.py index 5a4182b..926c93f 100644 --- a/youtube/local_playlist.py +++ b/youtube/local_playlist.py @@ -1,7 +1,12 @@ import os import json +from youtube.template import Template +from youtube import common +import html playlists_directory = os.path.normpath("data/playlists") +with open('yt_local_playlist_template.html', 'r', encoding='utf-8') as file: + local_playlist_template = Template(file.read()) def add_to_playlist(name, video_info_list): with open(os.path.join(playlists_directory, name + ".txt"), "a", encoding='utf-8') as file: @@ -9,11 +14,74 @@ def add_to_playlist(name, video_info_list): file.write(info + "\n") -def get_playlist_page(name): - pass +def get_local_playlist_page(name): + videos_html = '' + with open(os.path.join(playlists_directory, name + ".txt"), 'r', encoding='utf-8') as file: + videos = file.read() + videos = videos.splitlines() + for video in videos: + try: + info = json.loads(video) + info['thumbnail'] = common.get_thumbnail_url(info['id']) + videos_html += common.video_item_html(info, common.small_video_item_template) + except json.decoder.JSONDecodeError: + pass + return local_playlist_template.substitute( + page_title = name + ' - Local playlist', + header = common.get_header(), + videos = videos_html, + title = name, + page_buttons = '' + ) def get_playlist_names(): for item in os.listdir(playlists_directory): name, ext = os.path.splitext(item) if ext == '.txt': - yield name
\ No newline at end of file + yield name + +''' + main{ + display:grid; + grid-template-columns: 3fr 1fr; + } + + header{ + grid-template-columns: 3fr 1fr; + } + + #left{ + grid-column: 1; + grid-row: 1; + + display: grid; + grid-template-columns: 1fr 800px; + grid-template-rows: 0fr 1fr 0fr; + } + + #right{ + grid-column: 2; + grid-row: 1; + } +''' +def get_playlists_list_page(): + page = '''<ul>\n''' + list_item_template = Template(''' <li><a href="$url">$name</a></li>\n''') + for name in get_playlist_names(): + page += list_item_template.substitute(url = html.escape(common.URL_ORIGIN + '/playlists/' + name), name = html.escape(name)) + page += '''</ul>\n''' + return common.yt_basic_template.substitute( + page_title = "Local playlists", + header = common.get_header(), + style = '', + page = page, + ) + + +def get_playlist_page(url, query_string=''): + url = url.rstrip('/').lstrip('/') + if url == '': + return get_playlists_list_page() + else: + return get_local_playlist_page(url) + |