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")
|
@app.route("/<string:domain>/videos/watch/<string:id>/<string:lang>.vtt")
|
||||||
async def subtitles(domain, id, lang):
|
async def subtitles(domain, id, lang):
|
||||||
try:
|
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:
|
except Exception as e:
|
||||||
return await render_template(
|
return await render_template(
|
||||||
"error.html",
|
"error.html",
|
||||||
|
|
|
@ -26,10 +26,11 @@ def video_captions(domain, id):
|
||||||
url = "https://" + domain + "/api/v1/videos/" + id + "/captions"
|
url = "https://" + domain + "/api/v1/videos/" + id + "/captions"
|
||||||
return json.loads(requests.get(url).text)
|
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
|
# 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
|
# 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
|
return requests.get(url).text
|
||||||
|
|
||||||
def search(domain, term, start=0, count=10):
|
def search(domain, term, start=0, count=10):
|
||||||
|
|
Loading…
Reference in a new issue