aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server.py7
-rw-r--r--youtube/__init__.py4
-rw-r--r--youtube/static/js/common.js4
-rw-r--r--youtube/static/js/hotkeys.js3
-rw-r--r--youtube/static/js/sponsorblock.js8
-rw-r--r--youtube/templates/base.html5
-rw-r--r--youtube/templates/watch.html1
-rw-r--r--youtube/watch.py4
8 files changed, 21 insertions, 15 deletions
diff --git a/server.py b/server.py
index acce420..319a140 100644
--- a/server.py
+++ b/server.py
@@ -66,7 +66,7 @@ def proxy_site(env, start_response, video=False):
# such as 8192 lest that causes the socket library to limit the
# TCP window size
# Might need fine-tuning, since this gives us 4*65536
- # The tradeoff is that larger values (such as 6 seconds) only
+ # The tradeoff is that larger values (such as 6 seconds) only
# allows video to buffer in those increments, meaning user must wait
# until the entire chunk is downloaded before video starts playing
content_part = response.read(32*8192)
@@ -85,6 +85,7 @@ site_handlers = {
'ytimg.com': proxy_site,
'yt3.ggpht.com': proxy_site,
'lh3.googleusercontent.com': proxy_site,
+ 'sponsor.ajay.app': proxy_site,
'googlevideo.com': proxy_video,
}
@@ -95,9 +96,9 @@ def split_url(url):
match = re.match(r'(?:https?://)?([\w-]+(?:\.[\w-]+)+?)(/.*|$)', url)
if match is None:
raise ValueError('Invalid or unsupported url: ' + url)
-
+
return match.group(1), match.group(2)
-
+
def error_code(code, start_response):
diff --git a/youtube/__init__.py b/youtube/__init__.py
index 3c271f1..92e1878 100644
--- a/youtube/__init__.py
+++ b/youtube/__init__.py
@@ -7,6 +7,10 @@ from sys import exc_info
yt_app = flask.Flask(__name__)
yt_app.config['TEMPLATES_AUTO_RELOAD'] = True
yt_app.url_map.strict_slashes = False
+# yt_app.jinja_env.trim_blocks = True
+# yt_app.jinja_env.lstrip_blocks = True
+
+
yt_app.add_url_rule('/settings', 'settings_page', settings.settings_page, methods=['POST', 'GET'])
diff --git a/youtube/static/js/common.js b/youtube/static/js/common.js
index 42fa41f..2db4390 100644
--- a/youtube/static/js/common.js
+++ b/youtube/static/js/common.js
@@ -108,10 +108,6 @@ function copyTextToClipboard(text) {
document.body.removeChild(textArea);
}
-function getVideoID() {
- return JSON.parse(Q(".video-info input[name=video_info_list]").value).id
-}
-
window.addEventListener('DOMContentLoaded', function() {
cur_track_idx = getDefaultTranscriptTrackIdx();
diff --git a/youtube/static/js/hotkeys.js b/youtube/static/js/hotkeys.js
index 1f41510..e199f3b 100644
--- a/youtube/static/js/hotkeys.js
+++ b/youtube/static/js/hotkeys.js
@@ -37,9 +37,8 @@ function onKeyDown(e) {
else tt.mode = "showing";
}
else if (c == "t") {
- let video_id = getVideoID();
let ts = Math.floor(Q("video").currentTime);
- copyTextToClipboard(`https://youtu.be/${video_id}?t=${ts}`);
+ copyTextToClipboard(`https://youtu.be/${data.video_id}?t=${ts}`);
}
}
diff --git a/youtube/static/js/sponsorblock.js b/youtube/static/js/sponsorblock.js
index 66dcf16..692de9b 100644
--- a/youtube/static/js/sponsorblock.js
+++ b/youtube/static/js/sponsorblock.js
@@ -12,14 +12,14 @@ document.addEventListener('DOMContentLoaded', ()=>{
function load_sponsorblock(){
const info_elem = Q('#skip_n');
if (info_elem.innerText.length) return; // already fetched
- const video_id = getVideoID();
- const hash = sha256(video_id).substr(0,4);
+ const hash = sha256(data.video_id).substr(0,4);
const video_obj = Q("video");
- fetch(`https://sponsor.ajay.app/api/skipSegments/${hash}`)
+ let url = `/https://sponsor.ajay.app/api/skipSegments/${hash}`;
+ fetch(url)
.then(response => response.json())
.then(data => {
for (const video of data) {
- if (video.videoID != video_id) continue;
+ if (video.videoID != data.video_id) continue;
info_elem.innerText = `(${video.segments.length} segments)`;
const cat_n = video.segments.map(e=>e.category).sort()
.reduce((acc,e) => (acc[e]=(acc[e]||0)+1, acc), {});
diff --git a/youtube/templates/base.html b/youtube/templates/base.html
index df7bb99..ef69960 100644
--- a/youtube/templates/base.html
+++ b/youtube/templates/base.html
@@ -4,8 +4,9 @@
<meta charset="utf-8">
<title>{{ page_title }}</title>
<meta http-equiv="Content-Security-Policy" content="default-src 'self' 'unsafe-inline'; media-src 'self' https://*.googlevideo.com;
- {{ "img-src https://*.googleusercontent.com https://*.ggpht.com https://*.ytimg.com;" if not settings.proxy_images else "" }}
- {{ "" if not settings.use_sponsorblock_js else "connect-src 'self' https://sponsor.ajay.app;"|safe }}">
+ {% if not settings.proxy_images %}
+ img-src https://*.googleusercontent.com https://*.ggpht.com https://*.ytimg.com;
+ {% endif %}
<link href="{{ theme_path }}" type="text/css" rel="stylesheet">
<link href="/youtube.com/static/shared.css" type="text/css" rel="stylesheet">
diff --git a/youtube/templates/watch.html b/youtube/templates/watch.html
index d89cc05..319c314 100644
--- a/youtube/templates/watch.html
+++ b/youtube/templates/watch.html
@@ -695,6 +695,7 @@ Reload without invidious (for usage of new identity button).</a>
{% endif %}
{% endif %}
+ <script> data = {{ js_data|tojson }} </script>
<script src="/youtube.com/static/js/common.js"></script>
<script src="/youtube.com/static/js/transcript-table.js"></script>
{% if settings.use_video_hotkeys %} <script src="/youtube.com/static/js/hotkeys.js"></script> {% endif %}
diff --git a/youtube/watch.py b/youtube/watch.py
index 1a9e6c4..1fa952c 100644
--- a/youtube/watch.py
+++ b/youtube/watch.py
@@ -489,6 +489,10 @@ def get_watch_page(video_id=None):
invidious_reload_button = info['invidious_reload_button'],
video_url = util.URL_ORIGIN + '/watch?v=' + video_id,
time_start = time_start,
+
+ js_data = {
+ 'video_id': video_info['id'],
+ }
)