430 lines
17 KiB
Diff
430 lines
17 KiB
Diff
diff --git a/settings.py b/settings.py
|
|
index 540d3f7..17429e5 100644
|
|
--- a/settings.py
|
|
+++ b/settings.py
|
|
@@ -542,6 +542,6 @@ def settings_page():
|
|
for func, old_value, value in to_call:
|
|
func(old_value, value)
|
|
|
|
- return flask.redirect(util.URL_ORIGIN + '/settings', 303)
|
|
+ return flask.redirect(util.URL_ORIGIN)
|
|
else:
|
|
flask.abort(400)
|
|
diff --git a/youtube/__init__.py b/youtube/__init__.py
|
|
index 3604b21..0a2d363 100644
|
|
--- a/youtube/__init__.py
|
|
+++ b/youtube/__init__.py
|
|
@@ -14,9 +14,6 @@ yt_app.url_map.strict_slashes = False
|
|
# yt_app.jinja_env.lstrip_blocks = True
|
|
|
|
|
|
-yt_app.add_url_rule('/settings', 'settings_page', settings.settings_page, methods=['POST', 'GET'])
|
|
-
|
|
-
|
|
@yt_app.route('/')
|
|
def homepage():
|
|
return flask.render_template('home.html', title="YT Local")
|
|
diff --git a/youtube/static/channel.css b/youtube/static/channel.css
|
|
index 030bc11..29f0c05 100644
|
|
--- a/youtube/static/channel.css
|
|
+++ b/youtube/static/channel.css
|
|
@@ -268,11 +268,9 @@ hr {
|
|
|
|
.item-box {
|
|
display: grid;
|
|
- grid-template-columns: 1.9fr 0.1fr;
|
|
+ grid-template-columns: 1fr;
|
|
grid-template-rows: 1fr;
|
|
- grid-gap: 1px;
|
|
- grid-template-areas:
|
|
- "item-video item-checkbox";
|
|
+ grid-template-areas: "item-video";
|
|
}
|
|
|
|
.item-video {
|
|
diff --git a/youtube/static/local_playlist.css b/youtube/static/local_playlist.css
|
|
index dedd2dd..9aa8811 100644
|
|
--- a/youtube/static/local_playlist.css
|
|
+++ b/youtube/static/local_playlist.css
|
|
@@ -243,11 +243,9 @@ hr {
|
|
|
|
.item-box {
|
|
display: grid;
|
|
- grid-template-columns: 1.9fr 0.1fr;
|
|
+ grid-template-columns: 1fr;
|
|
grid-template-rows: 1fr;
|
|
- grid-gap: 1px;
|
|
- grid-template-areas:
|
|
- "item-video item-checkbox";
|
|
+ grid-template-areas: "item-video";
|
|
}
|
|
|
|
.item-video {
|
|
diff --git a/youtube/static/playlist.css b/youtube/static/playlist.css
|
|
index e6ae0f9..1f0211c 100644
|
|
--- a/youtube/static/playlist.css
|
|
+++ b/youtube/static/playlist.css
|
|
@@ -253,11 +253,9 @@ hr {
|
|
|
|
.item-box {
|
|
display: grid;
|
|
- grid-template-columns: 1.9fr 0.1fr;
|
|
+ grid-template-columns: 1fr;
|
|
grid-template-rows: 1fr;
|
|
- grid-gap: 1px;
|
|
- grid-template-areas:
|
|
- "item-video item-checkbox";
|
|
+ grid-template-areas: "item-video";
|
|
}
|
|
|
|
.item-video {
|
|
diff --git a/youtube/static/search.css b/youtube/static/search.css
|
|
index 9b7bf8d..25af37c 100644
|
|
--- a/youtube/static/search.css
|
|
+++ b/youtube/static/search.css
|
|
@@ -271,11 +271,9 @@ hr {
|
|
|
|
.item-box {
|
|
display: grid;
|
|
- grid-template-columns: 1.9fr 0.1fr;
|
|
+ grid-template-columns: 1fr;
|
|
grid-template-rows: 1fr;
|
|
- grid-gap: 1px;
|
|
- grid-template-areas:
|
|
- "item-video item-checkbox";
|
|
+ grid-template-areas: "item-video";
|
|
}
|
|
|
|
.item-video {
|
|
diff --git a/youtube/static/subscription.css b/youtube/static/subscription.css
|
|
index e4e9c8b..8acb9b1 100644
|
|
--- a/youtube/static/subscription.css
|
|
+++ b/youtube/static/subscription.css
|
|
@@ -247,11 +247,9 @@ hr {
|
|
|
|
.item-box {
|
|
display: grid;
|
|
- grid-template-columns: 1.9fr 0.1fr;
|
|
+ grid-template-columns: 1fr;
|
|
grid-template-rows: 1fr;
|
|
- grid-gap: 1px;
|
|
- grid-template-areas:
|
|
- "item-video item-checkbox";
|
|
+ grid-template-areas: "item-video";
|
|
}
|
|
|
|
.item-video {
|
|
diff --git a/youtube/static/watch.css b/youtube/static/watch.css
|
|
index 489a4eb..2ea4e38 100644
|
|
--- a/youtube/static/watch.css
|
|
+++ b/youtube/static/watch.css
|
|
@@ -409,11 +409,9 @@ label[for=options-toggle-cbox] {
|
|
|
|
.item-box {
|
|
display: grid;
|
|
- grid-template-columns: 1.9fr 0.1fr;
|
|
+ grid-template-columns: 1fr;
|
|
grid-template-rows: 1fr;
|
|
- grid-gap: 1px;
|
|
- grid-template-areas:
|
|
- "item-video item-checkbox";
|
|
+ grid-template-areas: "item-video";
|
|
}
|
|
|
|
.item-video {
|
|
diff --git a/youtube/templates/base.html b/youtube/templates/base.html
|
|
index b68c250..1f5b332 100644
|
|
--- a/youtube/templates/base.html
|
|
+++ b/youtube/templates/base.html
|
|
@@ -131,22 +131,6 @@
|
|
</div>
|
|
</form>
|
|
|
|
- {% if header_playlist_names is defined %}
|
|
- <form class="playlist" id="playlist-edit" action="/youtube.com/edit_playlist" method="post" target="_self">
|
|
- <input class="play-box" name="playlist_name" id="playlist-name-selection" list="playlist-options" type="search" placeholder="Add name of your playlist...">
|
|
- <datalist class="play-hidden" id="playlist-options">
|
|
- {% for playlist_name in header_playlist_names %}
|
|
- <option value="{{ playlist_name }}">{{ playlist_name }}</option>
|
|
- {% endfor %}
|
|
- </datalist>
|
|
- <button class="play-add" type="submit" id="playlist-add-button" name="action" value="add">+List</button>
|
|
- <div class="play-clean">
|
|
- <button type="reset" id="item-selection-reset">Clear</button>
|
|
- </div>
|
|
- </form>
|
|
- <script src="/youtube.com/static/js/playlistadd.js"></script>
|
|
- {% endif %}
|
|
-
|
|
</header>
|
|
<main class="main">
|
|
|
|
diff --git a/youtube/templates/channel.html b/youtube/templates/channel.html
|
|
index 294f1df..a4361c3 100644
|
|
--- a/youtube/templates/channel.html
|
|
+++ b/youtube/templates/channel.html
|
|
@@ -21,14 +21,6 @@
|
|
<div class="summary">
|
|
<p>{{ short_description }}</p>
|
|
</div>
|
|
- <div class="subscribe">
|
|
- <form method="POST" action="/youtube.com/subscriptions" class="subscribe-unsubscribe">
|
|
- <input class="btn-subscribe" type="submit" value="{{ 'Unsubscribe' if subscribed else 'Subscribe' }}">
|
|
- <input type="hidden" name="channel_id" value="{{ channel_id }}">
|
|
- <input type="hidden" name="channel_name" value="{{ channel_name }}">
|
|
- <input type="hidden" name="action" value="{{ 'unsubscribe' if subscribed else 'subscribe' }}">
|
|
- </form>
|
|
- </div>
|
|
</div>
|
|
<hr/>
|
|
|
|
diff --git a/youtube/templates/common_elements.html b/youtube/templates/common_elements.html
|
|
index bacc513..2773ed6 100644
|
|
--- a/youtube/templates/common_elements.html
|
|
+++ b/youtube/templates/common_elements.html
|
|
@@ -70,9 +70,6 @@
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
- {% if info['type'] == 'video' %}
|
|
- <input class="item-checkbox" type="checkbox" name="video_info_list" value="{{ info['video_info'] }}" form="playlist-edit">
|
|
- {% endif %}
|
|
{% endif %}
|
|
</article>
|
|
{% endmacro %}
|
|
diff --git a/youtube/templates/home.html b/youtube/templates/home.html
|
|
index ef1f029..b537cca 100644
|
|
--- a/youtube/templates/home.html
|
|
+++ b/youtube/templates/home.html
|
|
@@ -4,10 +4,4 @@
|
|
<link href="/youtube.com/static/home.css" rel="stylesheet"/>
|
|
{% endblock style %}
|
|
{% block main %}
|
|
- <ul>
|
|
- <li><a href="/youtube.com/playlists">Local playlists</a></li>
|
|
- <li><a href="/youtube.com/subscriptions">Subscriptions</a></li>
|
|
- <li><a href="/youtube.com/subscription_manager">Subscription Manager</a></li>
|
|
- <li><a href="/youtube.com/settings">Settings</a></li>
|
|
- </ul>
|
|
{% endblock main %}
|
|
diff --git a/youtube/templates/settings.html b/youtube/templates/settings.html
|
|
index 7a7ce9e..4749d4c 100644
|
|
--- a/youtube/templates/settings.html
|
|
+++ b/youtube/templates/settings.html
|
|
@@ -5,43 +5,5 @@
|
|
{% endblock style %}
|
|
|
|
{% block main %}
|
|
- <form method="POST" class="settings-form">
|
|
- {% for categ in categories %}
|
|
- <h2>{{ categ|capitalize }}</h2>
|
|
- <ul class="settings-list">
|
|
- {% for setting_name, setting_info, value in settings_by_category[categ] %}
|
|
- {% if not setting_info.get('hidden', false) %}
|
|
- <li class="setting-item">
|
|
- {% if 'label' is in(setting_info) %}
|
|
- <label for="{{ 'setting_' + setting_name }}">{{ setting_info['label'] }}</label>
|
|
- {% else %}
|
|
- <label for="{{ 'setting_' + setting_name }}">{{ setting_name.replace('_', ' ')|capitalize }}</label>
|
|
- {% endif %}
|
|
|
|
- {% if setting_info['type'].__name__ == 'bool' %}
|
|
- <input type="checkbox" id="{{ 'setting_' + setting_name }}" name="{{ setting_name }}" {{ 'checked' if value else '' }}>
|
|
- {% elif setting_info['type'].__name__ == 'int' %}
|
|
- {% if 'options' is in(setting_info) %}
|
|
- <select id="{{ 'setting_' + setting_name }}" name="{{ setting_name }}">
|
|
- {% for option in setting_info['options'] %}
|
|
- <option value="{{ option[0] }}" {{ 'selected' if option[0] == value else '' }}>{{ option[1] }}</option>
|
|
- {% endfor %}
|
|
- </select>
|
|
- {% else %}
|
|
- <input type="number" id="{{ 'setting_' + setting_name }}" name="{{ setting_name }}" value="{{ value }}" step="1">
|
|
- {% endif %}
|
|
- {% elif setting_info['type'].__name__ == 'float' %}
|
|
-
|
|
- {% elif setting_info['type'].__name__ == 'str' %}
|
|
- <input type="text" id="{{ 'setting_' + setting_name }}" name="{{ setting_name }}" value="{{ value }}">
|
|
- {% else %}
|
|
- <span>Error: Unknown setting type: setting_info['type'].__name__</span>
|
|
- {% endif %}
|
|
- </li>
|
|
- {% endif %}
|
|
- {% endfor %}
|
|
- </ul>
|
|
- {% endfor %}
|
|
- <input type="submit" value="Save settings">
|
|
- </form>
|
|
{% endblock main %}
|
|
diff --git a/youtube/templates/subscription_manager.html b/youtube/templates/subscription_manager.html
|
|
deleted file mode 100644
|
|
index 5db5d8d..0000000
|
|
--- a/youtube/templates/subscription_manager.html
|
|
+++ /dev/null
|
|
@@ -1,78 +0,0 @@
|
|
-{% set page_title = 'Subscription Manager' %}
|
|
-{% extends "base.html" %}
|
|
-{% block style %}
|
|
- <link href="/youtube.com/static/subscription_manager.css" rel="stylesheet"/>
|
|
-{% endblock style %}
|
|
-
|
|
-
|
|
-{% macro subscription_list(sub_list) %}
|
|
- {% for subscription in sub_list %}
|
|
- <li class="sub-list-item {{ 'muted' if subscription['muted'] else '' }}">
|
|
- <input class="sub-list-checkbox" name="channel_ids" value="{{ subscription['channel_id'] }}" form="subscription-manager-form" type="checkbox">
|
|
- <a href="{{ subscription['channel_url'] }}" class="sub-list-item-name" title="{{ subscription['channel_name'] }}">{{ subscription['channel_name'] }}</a>
|
|
- <span class="tag-list">{{ ', '.join(subscription['tags']) }}</span>
|
|
- </li>
|
|
- {% endfor %}
|
|
-{% endmacro %}
|
|
-
|
|
-{% block main %}
|
|
- <div class="import-export">
|
|
- <form class="subscriptions-import-form" enctype="multipart/form-data" action="/youtube.com/import_subscriptions" method="POST">
|
|
- <h2>Import subscriptions</h2>
|
|
- <div class="subscriptions-import-options">
|
|
- <input type="file" id="subscriptions-import" accept="application/json, application/xml, text/x-opml, text/csv" name="subscriptions_file" required>
|
|
- <input type="submit" value="Import">
|
|
- </div>
|
|
- </form>
|
|
-
|
|
- <form class="subscriptions-export-form" action="/youtube.com/export_subscriptions" method="POST">
|
|
- <h2>Export subscriptions</h2>
|
|
- <div class="subscriptions-export-options">
|
|
- <select id="export-type" name="export_format" title="Export format">
|
|
- <option value="json_newpipe">JSON (NewPipe)</option>
|
|
- <option value="json_google_takeout">JSON (Old Google Takeout Format)</option>
|
|
- <option value="opml">OPML (RSS, no tags)</option>
|
|
- </select>
|
|
- <label for="include-muted">Include muted</label>
|
|
- <input id="include-muted" type="checkbox" name="include_muted" checked>
|
|
- <input type="submit" value="Export">
|
|
- </div>
|
|
- </form>
|
|
- </div>
|
|
-
|
|
- <hr>
|
|
-
|
|
- <form id="subscription-manager-form" class="sub-list-controls" method="POST">
|
|
- {% if group_by_tags %}
|
|
- <a class="sort-button" href="/https://www.youtube.com/subscription_manager?group_by_tags=0">Don't group</a>
|
|
- {% else %}
|
|
- <a class="sort-button" href="/https://www.youtube.com/subscription_manager?group_by_tags=1">Group by tags</a>
|
|
- {% endif %}
|
|
- <input type="text" name="tags">
|
|
- <button type="submit" name="action" value="add_tags">Add tags</button>
|
|
- <button type="submit" name="action" value="remove_tags">Remove tags</button>
|
|
- <button type="submit" name="action" value="unsubscribe_verify">Unsubscribe</button>
|
|
- <button type="submit" name="action" value="mute">Mute</button>
|
|
- <button type="submit" name="action" value="unmute">Unmute</button>
|
|
- <input type="reset" value="Clear Selection">
|
|
- </form>
|
|
-
|
|
-
|
|
- {% if group_by_tags %}
|
|
- <ul class="tag-group-list">
|
|
- {% for tag_name, sub_list in tag_groups %}
|
|
- <li class="tag-group">
|
|
- <h2 class="tag-group-name">{{ tag_name }}</h2>
|
|
- <ol class="sub-list">
|
|
- {{ subscription_list(sub_list) }}
|
|
- </ol>
|
|
- </li>
|
|
- {% endfor %}
|
|
- </ul>
|
|
- {% else %}
|
|
- <ol class="sub-list">
|
|
- {{ subscription_list(sub_list) }}
|
|
- </ol>
|
|
- {% endif %}
|
|
-
|
|
-{% endblock main %}
|
|
diff --git a/youtube/templates/subscriptions.html b/youtube/templates/subscriptions.html
|
|
index b528e5c..6302fcc 100644
|
|
--- a/youtube/templates/subscriptions.html
|
|
+++ b/youtube/templates/subscriptions.html
|
|
@@ -13,71 +13,5 @@
|
|
|
|
{% block main %}
|
|
|
|
- <div class="subscriptions-sidebar">
|
|
- <div class="sidebar-links">
|
|
- <a class="sidebar-title" href="/youtube.com/subscription_manager" class="sub-manager-link">Subscription Manager</a>
|
|
- <form class="sidebar-action" method="POST" class="refresh-all">
|
|
- <input type="submit" value="Check All">
|
|
- <input type="hidden" name="action" value="refresh">
|
|
- <input type="hidden" name="type" value="all">
|
|
- </form>
|
|
- </div>
|
|
-
|
|
- <ol class="sidebar-list tags">
|
|
- {% if current_tag %}
|
|
- <li class="sidebar-list-item">
|
|
- <a href="/youtube.com/subscriptions" class="sidebar-item-name">Any tag</a>
|
|
- </li>
|
|
- {% endif %}
|
|
-
|
|
- {% for tag in tags %}
|
|
- <li class="sidebar-list-item">
|
|
- {% if tag == current_tag %}
|
|
- <span class="sidebar-item-name">{{ tag }}</span>
|
|
- {% else %}
|
|
- <a href="?tag={{ tag|urlencode }}" class="sidebar-item-name">{{ tag }}</a>
|
|
- {% endif %}
|
|
- <form method="POST" class="sidebar-item-refresh">
|
|
- <input type="submit" value="Check">
|
|
- <input type="hidden" name="action" value="refresh">
|
|
- <input type="hidden" name="type" value="tag">
|
|
- <input type="hidden" name="tag_name" value="{{ tag }}">
|
|
- </form>
|
|
- </li>
|
|
- {% endfor %}
|
|
- </ol>
|
|
-
|
|
- <hr>
|
|
- <ol class="sidebar-list sub-refresh-list">
|
|
- {% for subscription in subscription_list %}
|
|
- <li class="sidebar-list-item {{ 'muted' if subscription['muted'] else '' }}">
|
|
- <a href="{{ subscription['channel_url'] }}" class="sidebar-item-name" title="{{ subscription['channel_name'] }}">{{ subscription['channel_name'] }}</a>
|
|
- <form method="POST" class="sidebar-item-refresh">
|
|
- <input type="submit" value="Check">
|
|
- <input type="hidden" name="action" value="refresh">
|
|
- <input type="hidden" name="type" value="channel">
|
|
- <input type="hidden" name="channel_id" value="{{ subscription['channel_id'] }}">
|
|
- </form>
|
|
- </li>
|
|
- {% endfor %}
|
|
- </ol>
|
|
- </div>
|
|
-
|
|
- {% if current_tag %}
|
|
- <h2 class="current-tag">{{ current_tag }}</h2>
|
|
- {% endif %}
|
|
-
|
|
- <div class="video-container">
|
|
- {% for video_info in videos %}
|
|
- {{ common_elements.item(video_info) }}
|
|
- {% endfor %}
|
|
- </div>
|
|
- <hr/>
|
|
-
|
|
- <footer class="pagination-container">
|
|
- <nav class="pagination-list">
|
|
- {{ common_elements.page_buttons(num_pages, '/youtube.com/subscriptions', parameters_dictionary) }}
|
|
- </nav>
|
|
- </footer>
|
|
|
|
{% endblock main %}
|
|
diff --git a/youtube/templates/watch.html b/youtube/templates/watch.html
|
|
index b4f9adf..967177e 100644
|
|
--- a/youtube/templates/watch.html
|
|
+++ b/youtube/templates/watch.html
|
|
@@ -93,7 +93,6 @@
|
|
</select>
|
|
{% endif %}
|
|
</div>
|
|
- <input class="v-checkbox" name="video_info_list" value="{{ video_info }}" form="playlist-edit" type="checkbox">
|
|
|
|
<span class="v-direct-link"><a href="https://youtu.be/{{ video_id }}" rel="noopener noreferrer" target="_blank">Direct Link</a></span>
|
|
|