Compare commits

...

5 Commits

Author SHA1 Message Date
metalune 3040a8f320 Add link to Todo-handler 2021-07-30 21:23:16 +02:00
metalune 6b03bf194b Add Instance Home and Home button 2021-07-30 20:04:32 +02:00
southerntofu a04a418d32 Channel links go to /video-channels/ not /accounts/ 2021-07-30 19:56:35 +02:00
metalune a01b5547ee Stop printing captions into log 2021-07-30 19:27:53 +02:00
southerntofu 90a7a03b34 Fix subtitles proxying, every URL is unique and beautiful 2021-07-30 19:26:35 +02:00
9 changed files with 26 additions and 8 deletions

View File

@ -34,6 +34,11 @@ $ python3 main.py ::1 7171 # Also works with IPv6 addresses
It is strongly disrecommended to run the production using this command. Instead, please refer to the [Quart deployment docs](https://pgjones.gitlab.io/quart/tutorials/deployment.html).
## TODO-Tracker
We have our TODO-Tracker hosted on todo.sr.ht: [SimpleerTube](https://todo.sr.ht/~metalune/SimpleerTube)
## License
This software is distributed under the AGPLv3 license. You can find a copy in the [LICENSE](LICENSE) file.

View File

@ -415,7 +415,14 @@ 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)
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",

View File

@ -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):

View File

@ -11,7 +11,12 @@
<body>
<center>
<h2>{{ instance_name }}</h2>
<a href="/">Home</a>
<b> | </b>
<a href="/{{ domain }}">Instance Home</a>
<form action="/{{ domain }}/search" method="POST">
<input size="45" style="max-width: 100%" type="text" name="query" id="query" placeholder="Search" value="{{ search_term }}"/>
<button type="submit">Search</button>

View File

@ -15,7 +15,7 @@
<br>
{{ video.views }} Views
<br>
<a href="/{{ domain }}/accounts/{{ video.channel.name }}@{{ video.channel.host }}">
<a href="/{{ domain }}/video-channels/{{ video.channel.name }}@{{ video.channel.host }}">
<b>{{ video.channel.displayName }}</b>
</a>
<br>

View File

@ -15,7 +15,7 @@
<br>
{{ video.views }} Views
<br>
<a href="/{{ domain }}/accounts/{{ video.channel.name }}@{{ video.channel.host }}">
<a href="/{{ domain }}/video-channels/{{ video.channel.name }}@{{ video.channel.host }}">
<b>{{ video.channel.displayName }}</b>
</a>
<br>

View File

@ -15,7 +15,7 @@
<br>
{{ video.views }} Views
<br>
<a href="/{{ domain }}/accounts/{{ video.channel.name }}@{{ video.channel.host }}">
<a href="/{{ domain }}/video-channels/{{ video.channel.name }}@{{ video.channel.host }}">
<b>{{ video.channel.displayName }}</b>
</a>
<br>

View File

@ -15,7 +15,7 @@
<br>
{{ video.views }} Views
<br>
<a href="/{{ domain }}/accounts/{{ video.channel.name }}@{{ video.channel.host }}">
<a href="/{{ domain }}/video-channels/{{ video.channel.name }}@{{ video.channel.host }}">
<b>{{ video.channel.displayName }}</b>
</a>
<br>

View File

@ -18,7 +18,7 @@
<br>
{{ result.views }} Views
<br>
<a href="/{{ domain }}/accounts/{{ result.channel.name }}@{{ result.channel.host }}">
<a href="/{{ domain }}/video-channels/{{ result.channel.name }}@{{ result.channel.host }}">
<b>{{ result.channel.displayName }}</b>
</a>
<br>