From d99f64c52b1f5d786b05d76ab01b221c21e0ae41 Mon Sep 17 00:00:00 2001 From: girst Date: Sat, 29 Apr 2023 13:19:21 +0000 Subject: [PATCH] support attribution_link redirects --- app/browse/lib.py | 2 +- app/youtube/__init__.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/browse/lib.py b/app/browse/lib.py index a4becf7..e4e36b6 100644 --- a/app/browse/lib.py +++ b/app/browse/lib.py @@ -34,7 +34,7 @@ def canonicalize_channel(path): # Note: for /watch, append query string, then return .endpoint.watchEndpoint.videoId resolved = fetch_ajax("navigation/resolve_url", url=f"https://www.youtube.com/{path}") - channel_id = resolved.get('endpoint',{}).get('browseEndpoint',{}).get('browseId') + channel_id = (resolved or {}).get('endpoint',{}).get('browseEndpoint',{}).get('browseId') return channel_id def find_and_parse_error(result): diff --git a/app/youtube/__init__.py b/app/youtube/__init__.py index 6acff52..48f6a5f 100644 --- a/app/youtube/__init__.py +++ b/app/youtube/__init__.py @@ -236,6 +236,12 @@ def plain_user_or_video(something): # XXX: something == 'thethoughtemporium' -> 404s raise NotFound("Note: some usernames not recognized; try searching it") +@frontend.route('/attribution_link', strict_slashes=False) +def attribution_link(): + # /attribution_link?a=anything&u=/channel/UCZYTClx2T1of7BRZ86-8fow + # /attribution_link?a=JdfC0C9V6ZI&u=%2Fwatch%3Fv%3DEhxJLojIE_o%26feature%3Dshare + return redirect(request.args.get('u') or '/') + @frontend.route('/c//') @frontend.route('/c//') @frontend.route('/user//') -- 2.39.3