~metalune/public-inbox

Fix subtitles proxying, every URL is unique and beautiful v1 PROPOSED

southerntofu
southerntofu: 1
 Fix subtitles proxying, every URL is unique and beautiful

 2 files changed, 12 insertions(+), 3 deletions(-)
Export patchset (mbox)
How do I use this?

Copy & paste the following snippet into your terminal to import this patchset into git:

curl -s https://lists.sr.ht/~metalune/public-inbox/patches/24065/mbox | git am -3
Learn more about email & git
View this thread in the archives

[PATCH] Fix subtitles proxying, every URL is unique and beautiful Export this patch

southerntofu
---
 main.py     | 10 +++++++++-
 peertube.py |  5 +++--
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/main.py b/main.py
index 05b608d..764a640 100644
--- a/main.py
+++ b/main.py
@@ -410,7 +410,15 @@ async def video_channels__about(domain, name):
@app.route("/<string:domain>/videos/watch/<string:id>/<string:lang>.vtt")
async def subtitles(domain, id, lang):
    try:
        return peertube.video_captions_download(domain, id, lang)
        captions = peertube.video_captions(domain, id)
        print(captions)
        for entry in captions["data"]:
            if entry["language"]["id"] == lang: return peertube.video_captions_download(domain, entry["captionPath"].split('/')[-1])
        return await render_template(
            "error.html",
            error_number = "404",
            error_reason = "This video has no subtitles/captions inthe requested language"
        ), 404
    except Exception as e:
        return await render_template(
            "error.html",
diff --git a/peertube.py b/peertube.py
index 186c473..d938ac9 100644
--- a/peertube.py
+++ b/peertube.py
@@ -26,10 +26,11 @@ def video_captions(domain, id):
    url = "https://" + domain + "/api/v1/videos/" + id + "/captions"
    return json.loads(requests.get(url).text)

def video_captions_download(domain, id, lang):
def video_captions_download(domain, caption_id):
    # URL is hardcoded to prevent further proxying. URL may change with updates, see captions API
    # eg. https://kolektiva.media/api/v1/videos/9c9de5e8-0a1e-484a-b099-e80766180a6d/captions
    url = "https://" + domain + "/lazy-static/video-captions/" + id + '-' + lang + ".vtt"
    # TODO: What if the captionPath doesn't follow this format on an instance? Should we really proxy ANYTHING returned by API?
    url = "https://" + domain + "/lazy-static/video-captions/" + caption_id
    return requests.get(url).text

def search(domain, term, start=0, count=10):
-- 
2.30.2
Thank you a lot!