aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Taylor <user234683@users.noreply.github.com>2020-02-01 16:16:49 -0800
committerJames Taylor <user234683@users.noreply.github.com>2020-02-01 16:16:49 -0800
commit9f090dbbf82a212b5e4b82f99ec48ec15c0946b0 (patch)
tree75d46cd26efc0697ff81bc2b5a937d803fc8b5c8
parent3f310bfc3308be5cede232339a724abe413d4d96 (diff)
downloadyt-local-9f090dbbf82a212b5e4b82f99ec48ec15c0946b0.tar.lz
yt-local-9f090dbbf82a212b5e4b82f99ec48ec15c0946b0.tar.xz
yt-local-9f090dbbf82a212b5e4b82f99ec48ec15c0946b0.zip
Watch page: add info box with allowed countries and tor exit node
Should help with debugging various content blocks
-rw-r--r--youtube/templates/watch.html27
-rw-r--r--youtube/watch.py6
-rw-r--r--youtube/yt_data_extract/watch_extraction.py8
3 files changed, 41 insertions, 0 deletions
diff --git a/youtube/templates/watch.html b/youtube/templates/watch.html
index 4e69322..27e1986 100644
--- a/youtube/templates/watch.html
+++ b/youtube/templates/watch.html
@@ -137,6 +137,7 @@
grid-row:8;
grid-column: 1 / span 2;
background-color: var(--interface-color);
+ padding-bottom: 7px;
}
.music-list table,th,td{
border: 1px solid;
@@ -150,6 +151,22 @@
font-weight:bold;
margin-bottom:5px;
}
+ .more-info{
+ grid-row: 9;
+ grid-column: 1 / span 2;
+ background-color: var(--interface-color);
+ }
+ .more-info > summary{
+ font-weight: normal;
+ border-width: 1px 0px;
+ border-style: solid;
+ }
+ .more-info-content{
+ padding: 5px;
+ }
+ .more-info-content p{
+ margin: 8px 0px;
+ }
.comments-area-outer{
grid-column: 2;
grid-row: 3;
@@ -316,6 +333,16 @@
</table>
{% endif %}
</div>
+ <details class="more-info">
+ <summary>More info</summary>
+ <div class="more-info-content">
+ <p>Tor exit node: {{ ip_address }}</p>
+ {% if invidious_used %}
+ <p>Used Invidious as fallback.</p>
+ {% endif %}
+ <p class="allowed-countries">Allowed countries: {{ allowed_countries|join(', ') }}</p>
+ </div>
+ </details>
</div>
{% if related_videos_mode != 0 %}
diff --git a/youtube/watch.py b/youtube/watch.py
index ceca4cd..f9e6b7c 100644
--- a/youtube/watch.py
+++ b/youtube/watch.py
@@ -235,12 +235,14 @@ def extract_info(video_id):
info['playability_error'] = decryption_error
# check for 403
+ info['invidious_used'] = False
if settings.route_tor and info['formats'] and info['formats'][0]['url']:
response = util.head(info['formats'][0]['url'],
report_text='Checked for URL access')
if response.status == 403:
print(('Access denied (403) for video urls.'
' Retrieving urls from Invidious...'))
+ info['invidious_used'] = True
try:
video_info = util.fetch_url(
'https://invidio.us/api/v1/videos/'
@@ -418,6 +420,10 @@ def get_watch_page(video_id=None):
limited_state = info['limited_state'],
age_restricted = info['age_restricted'],
playability_error = info['playability_error'],
+
+ allowed_countries = info['allowed_countries'],
+ ip_address = info['ip_address'] if settings.route_tor else None,
+ invidious_used = info['invidious_used'],
)
diff --git a/youtube/yt_data_extract/watch_extraction.py b/youtube/yt_data_extract/watch_extraction.py
index 6c0899b..67cee35 100644
--- a/youtube/yt_data_extract/watch_extraction.py
+++ b/youtube/yt_data_extract/watch_extraction.py
@@ -318,6 +318,14 @@ def _extract_formats(info, player_response):
info['formats'].append(fmt)
+ # get ip address
+ if info['formats']:
+ query_string = info['formats'][0].get('url', '?').split('?')[1]
+ info['ip_address'] = deep_get(
+ urllib.parse.parse_qs(query_string), 'ip', 0)
+
+
+
def _extract_playability_error(info, player_response, error_prefix=''):
if info['formats']:
info['playability_status'] = None