1
0
mirror of https://git.sr.ht/~metalune/simpleweb_peertube synced 2024-12-23 00:31:28 +01:00
SimpleerTube_peertube_minim.../main.py

107 lines
2.7 KiB
Python
Raw Normal View History

2021-01-19 12:13:21 +01:00
from quart import Quart, request, render_template, redirect
2021-01-17 16:04:24 +01:00
import peertube
2021-01-20 17:10:23 +01:00
commit = "not found"
with open(".git/refs/heads/main") as file:
for line in file:
commit = line
# we only expect one line
break
2021-01-17 16:04:24 +01:00
# Wrapper, only containing information that's important for us, and in some cases provides simplified ways to get information
class VideoWrapper:
def __init__(self, a, quality):
self.name = a["name"]
self.channel = a["channel"]
self.description = a["description"]
self.thumbnailPath = a["thumbnailPath"]
self.category = a["category"]
self.licence = a["licence"]
self.language = a["language"]
self.privacy = a["privacy"]
self.tags = a["tags"]
self.views = a["views"]
self.likes = a["likes"]
self.dislikes = a["dislikes"]
self.embedPath = a["embedPath"]
2021-01-17 16:04:24 +01:00
self.resolutions = []
self.video = None
self.files = a["files"]
if len(self.files) == 0:
self.files = ((a["streamingPlaylists"])[0])["files"]
for entry in self.files:
2021-01-17 16:04:24 +01:00
resolution = (entry["resolution"])["id"]
self.resolutions.append(entry["resolution"])
if str(resolution) == str(quality):
self.video = entry["fileUrl"]
self.no_quality_selected = not self.video
app = Quart(__name__)
2021-01-19 12:13:21 +01:00
@app.route("/")
2021-01-17 16:04:24 +01:00
async def main():
2021-01-19 12:13:21 +01:00
return await render_template("index.html")
2021-01-17 16:04:24 +01:00
2021-01-19 12:13:21 +01:00
@app.route("/<string:domain>/")
2021-01-17 16:04:24 +01:00
async def domain_main(domain):
2021-01-19 12:13:21 +01:00
return await render_template(
"domain_index.html",
domain=domain,
2021-01-20 16:29:58 +01:00
instance_name=peertube.get_instance_name(domain),
2021-01-20 17:10:23 +01:00
commit=commit,
2021-01-19 12:13:21 +01:00
)
2021-01-17 16:04:24 +01:00
2021-01-20 17:10:23 +01:00
@app.route("/<string:domain>/search", methods=["POST"])
2021-01-19 12:13:21 +01:00
async def search_redirect(domain):
query = (await request.form)["query"]
return redirect("/" + domain + "/search/" + query)
@app.route("/<string:domain>/search/<string:term>")
2021-01-17 16:04:24 +01:00
async def search(domain, term):
amount, results = peertube.search(domain, term)
2021-01-19 12:13:21 +01:00
return await render_template(
2021-01-20 17:10:23 +01:00
"search_results.html",
domain=domain,
amount=amount,
results=results,
search_term=term,
commit=commit,
2021-01-19 12:13:21 +01:00
)
2021-01-17 16:04:24 +01:00
2021-01-19 12:13:21 +01:00
@app.route("/<string:domain>/watch/<string:id>/")
2021-01-17 16:04:24 +01:00
async def video(domain, id):
data = peertube.video(domain, id)
quality = request.args.get("quality")
embed = request.args.get("embed")
2021-01-17 16:04:24 +01:00
if quality == None:
quality = "best"
vid = VideoWrapper(data, quality)
2021-01-20 17:10:23 +01:00
return await render_template(
"video.html",
domain=domain,
video=vid,
quality=quality,
embed=embed,
commit=commit,
)
2021-01-19 12:13:21 +01:00
2021-01-17 16:04:24 +01:00
if __name__ == "__main__":
app.run()