aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--youtube/html_common.py109
-rw-r--r--youtube/templates/base.html111
-rw-r--r--youtube/templates/error.html25
-rw-r--r--youtube/templates/watch.html30
-rw-r--r--youtube/watch.py5
5 files changed, 128 insertions, 152 deletions
diff --git a/youtube/html_common.py b/youtube/html_common.py
index 8e65a1f..b8ea0d6 100644
--- a/youtube/html_common.py
+++ b/youtube/html_common.py
@@ -104,115 +104,6 @@ medium_channel_item_template = Template('''
-
-header_template = Template('''
- <header>
-
- <form id="site-search" action="/youtube.com/search">
- <input type="search" name="query" class="search-box" value="$search_box_value">
- <button type="submit" value="Search" class="search-button">Search</button>
- <div class="dropdown">
- <button class="dropdown-label">Options</button>
- <div class="css-sucks">
- <div class="dropdown-content">
- <h3>Sort by</h3>
- <input type="radio" id="sort_relevance" name="sort" value="0">
- <label for="sort_relevance">Relevance</label>
-
- <input type="radio" id="sort_upload_date" name="sort" value="2">
- <label for="sort_upload_date">Upload date</label>
-
- <input type="radio" id="sort_view_count" name="sort" value="3">
- <label for="sort_view_count">View count</label>
-
- <input type="radio" id="sort_rating" name="sort" value="1">
- <label for="sort_rating">Rating</label>
-
-
- <h3>Upload date</h3>
- <input type="radio" id="time_any" name="time" value="0">
- <label for="time_any">Any</label>
-
- <input type="radio" id="time_last_hour" name="time" value="1">
- <label for="time_last_hour">Last hour</label>
-
- <input type="radio" id="time_today" name="time" value="2">
- <label for="time_today">Today</label>
-
- <input type="radio" id="time_this_week" name="time" value="3">
- <label for="time_this_week">This week</label>
-
- <input type="radio" id="time_this_month" name="time" value="4">
- <label for="time_this_month">This month</label>
-
- <input type="radio" id="time_this_year" name="time" value="5">
- <label for="time_this_year">This year</label>
-
- <h3>Type</h3>
- <input type="radio" id="type_any" name="type" value="0">
- <label for="type_any">Any</label>
-
- <input type="radio" id="type_video" name="type" value="1">
- <label for="type_video">Video</label>
-
- <input type="radio" id="type_channel" name="type" value="2">
- <label for="type_channel">Channel</label>
-
- <input type="radio" id="type_playlist" name="type" value="3">
- <label for="type_playlist">Playlist</label>
-
- <input type="radio" id="type_movie" name="type" value="4">
- <label for="type_movie">Movie</label>
-
- <input type="radio" id="type_show" name="type" value="5">
- <label for="type_show">Show</label>
-
-
- <h3>Duration</h3>
- <input type="radio" id="duration_any" name="duration" value="0">
- <label for="duration_any">Any</label>
-
- <input type="radio" id="duration_short" name="duration" value="1">
- <label for="duration_short">Short (< 4 minutes)</label>
-
- <input type="radio" id="duration_long" name="duration" value="2">
- <label for="duration_long">Long (> 20 minutes)</label>
-
- </div>
- </div>
- </div>
- </form>
-
- <div id="header-right">
- <form id="playlist-edit" action="/youtube.com/edit_playlist" method="post" target="_self">
- <input name="playlist_name" id="playlist-name-selection" list="playlist-options" type="text">
- <datalist id="playlist-options">
-$playlists
- </datalist>
- <button type="submit" id="playlist-add-button" name="action" value="add">Add to playlist</button>
- <button type="reset" id="item-selection-reset">Clear selection</button>
- </form>
- <a href="/youtube.com/playlists" id="local-playlists">Local playlists</a>
- </div>
- </header>
-''')
-playlist_option_template = Template('''<option value="$name">$name</option>''')
-def get_header(search_box_value=""):
- playlists = ''
- for name in local_playlist.get_playlist_names():
- playlists += playlist_option_template.substitute(name = name)
- return header_template.substitute(playlists = playlists, search_box_value = html.escape(search_box_value))
-
-
-
-
-
-
-
-
-
-
-
def badges_html(badges):
return ' | '.join(map(html.escape, badges))
diff --git a/youtube/templates/base.html b/youtube/templates/base.html
new file mode 100644
index 0000000..e98f972
--- /dev/null
+++ b/youtube/templates/base.html
@@ -0,0 +1,111 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <title>{% block page_title %}{% endblock %}</title>
+ <link href="/youtube.com/static/shared.css" type="text/css" rel="stylesheet">
+ <link href="/youtube.com/static/comments.css" type="text/css" rel="stylesheet">
+ <link href="/youtube.com/static/favicon.ico" type="image/x-icon" rel="icon">
+ <link title="Youtube local" href="/youtube.com/opensearch.xml" rel="search" type="application/opensearchdescription+xml">
+ <style type="text/css">
+{% block style %}
+{% endblock %}
+ </style>
+ </head>
+ <body>
+ <header>
+ <form id="site-search" action="/youtube.com/search">
+ <input type="search" name="query" class="search-box" value="{{ search_box_value }}">
+ <button type="submit" value="Search" class="search-button">Search</button>
+ <div class="dropdown">
+ <button class="dropdown-label">Options</button>
+ <div class="css-sucks">
+ <div class="dropdown-content">
+ <h3>Sort by</h3>
+ <input type="radio" id="sort_relevance" name="sort" value="0">
+ <label for="sort_relevance">Relevance</label>
+
+ <input type="radio" id="sort_upload_date" name="sort" value="2">
+ <label for="sort_upload_date">Upload date</label>
+
+ <input type="radio" id="sort_view_count" name="sort" value="3">
+ <label for="sort_view_count">View count</label>
+
+ <input type="radio" id="sort_rating" name="sort" value="1">
+ <label for="sort_rating">Rating</label>
+
+
+ <h3>Upload date</h3>
+ <input type="radio" id="time_any" name="time" value="0">
+ <label for="time_any">Any</label>
+
+ <input type="radio" id="time_last_hour" name="time" value="1">
+ <label for="time_last_hour">Last hour</label>
+
+ <input type="radio" id="time_today" name="time" value="2">
+ <label for="time_today">Today</label>
+
+ <input type="radio" id="time_this_week" name="time" value="3">
+ <label for="time_this_week">This week</label>
+
+ <input type="radio" id="time_this_month" name="time" value="4">
+ <label for="time_this_month">This month</label>
+
+ <input type="radio" id="time_this_year" name="time" value="5">
+ <label for="time_this_year">This year</label>
+
+ <h3>Type</h3>
+ <input type="radio" id="type_any" name="type" value="0">
+ <label for="type_any">Any</label>
+
+ <input type="radio" id="type_video" name="type" value="1">
+ <label for="type_video">Video</label>
+
+ <input type="radio" id="type_channel" name="type" value="2">
+ <label for="type_channel">Channel</label>
+
+ <input type="radio" id="type_playlist" name="type" value="3">
+ <label for="type_playlist">Playlist</label>
+
+ <input type="radio" id="type_movie" name="type" value="4">
+ <label for="type_movie">Movie</label>
+
+ <input type="radio" id="type_show" name="type" value="5">
+ <label for="type_show">Show</label>
+
+
+ <h3>Duration</h3>
+ <input type="radio" id="duration_any" name="duration" value="0">
+ <label for="duration_any">Any</label>
+
+ <input type="radio" id="duration_short" name="duration" value="1">
+ <label for="duration_short">Short (&lt; 4 minutes)</label>
+
+ <input type="radio" id="duration_long" name="duration" value="2">
+ <label for="duration_long">Long (&gt; 20 minutes)</label>
+
+ </div>
+ </div>
+ </div>
+ </form>
+
+ <div id="header-right">
+ <form id="playlist-edit" action="/youtube.com/edit_playlist" method="post" target="_self">
+ <input name="playlist_name" id="playlist-name-selection" list="playlist-options" type="text">
+ <datalist id="playlist-options">
+ {% for playlist_name in header_playlist_names %}
+ <option value="{{ playlist_name }}">{{ playlist_name }}</option>
+ {% endfor %}
+ </datalist>
+ <button type="submit" id="playlist-add-button" name="action" value="add">Add to playlist</button>
+ <button type="reset" id="item-selection-reset">Clear selection</button>
+ </form>
+ <a href="/youtube.com/playlists" id="local-playlists">Local playlists</a>
+ </div>
+ </header>
+ <main>
+{% block main %}
+{% endblock %}
+ </main>
+ </body>
+</html>
diff --git a/youtube/templates/error.html b/youtube/templates/error.html
index f253807..1f33c44 100644
--- a/youtube/templates/error.html
+++ b/youtube/templates/error.html
@@ -1,17 +1,8 @@
-<!DOCTYPE html>
-<html>
- <head>
- <meta charset="utf-8">
- <title>Error</title>
- <link href="/youtube.com/shared.css" type="text/css" rel="stylesheet">
- <link href="/youtube.com/comments.css" type="text/css" rel="stylesheet">
- <link href="/youtube.com/favicon.ico" type="image/x-icon" rel="icon">
- <link title="Youtube local" href="/youtube.com/opensearch.xml" rel="search" type="application/opensearchdescription+xml">
- </head>
- <body>
-{{ header|safe }}
- <main>
-{{ error_message }}
- </main>
- </body>
-</html>
+{% extends "base.html" %}
+
+{% block page_title %}Error{% endblock %}
+
+{% block main %}
+ {{ error_message }}
+{% endblock %}
+
diff --git a/youtube/templates/watch.html b/youtube/templates/watch.html
index 7e83306..f00413d 100644
--- a/youtube/templates/watch.html
+++ b/youtube/templates/watch.html
@@ -1,13 +1,6 @@
-<!DOCTYPE html>
-<html>
- <head>
- <meta charset="utf-8">
- <title>{{ title }}</title>
- <link href="/youtube.com/static/shared.css" type="text/css" rel="stylesheet">
- <link href="/youtube.com/static/comments.css" type="text/css" rel="stylesheet">
- <link href="/youtube.com/static/favicon.ico" type="image/x-icon" rel="icon">
- <link title="Youtube local" href="/youtube.com/opensearch.xml" rel="search" type="application/opensearchdescription+xml">
- <style type="text/css">
+{% extends "base.html" %}
+{% block page_title %}{{ title }}{% endblock %}
+{% block style %}
main{
display:grid;
grid-template-columns: minmax(0px, 3fr) 640px 40px 500px minmax(0px,2fr);
@@ -150,11 +143,9 @@
grid-template-columns: 60px 90px auto;
max-height: 1.2em;
}
- </style>
- </head>
- <body>
-{{ header|safe }}
- <main>
+{% endblock style %}
+
+{% block main %}
<div id="left">
</div>
<article class="full-item">
@@ -212,11 +203,4 @@
{{ related|safe }}
</nav>
- </main>
-
-
-
-
-
- </body>
-</html>
+{% endblock main %}
diff --git a/youtube/watch.py b/youtube/watch.py
index 48fd7e3..72268a7 100644
--- a/youtube/watch.py
+++ b/youtube/watch.py
@@ -1,5 +1,5 @@
from youtube import yt_app
-from youtube import util, html_common, comments
+from youtube import util, html_common, comments, local_playlist
import settings
from flask import request
@@ -214,9 +214,8 @@ def get_watch_page():
'note': yt_dl_downloader._format_note(format),
})
-
return flask.render_template('watch.html',
- header = html_common.get_header(),
+ header_playlist_names = local_playlist.get_playlist_names(),
uploader_channel_url = '/' + info['uploader_url'],
upload_date = upload_date,
views = (lambda x: '{:,}'.format(x) if x is not None else "")(info.get("view_count", None)),