Fix subtitles proxying, every URL is unique and beautiful
This commit is contained in:
parent
0b47bda1aa
commit
90a7a03b34
2 changed files with 12 additions and 3 deletions
10
main.py
10
main.py
|
@ -415,7 +415,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",
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Reference in a new issue