From 52de1ece88f61adb59728faaa443ae6d9beece29 Mon Sep 17 00:00:00 2001 From: MMaker Date: Fri, 31 Jan 2025 13:26:45 -0500 Subject: [PATCH] Parse and return thumbnail URL in server response --- app.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/app.py b/app.py index 3d9408b..aef7c4d 100644 --- a/app.py +++ b/app.py @@ -1,4 +1,5 @@ import http.cookiejar +import json from flask import Flask, Response import requests from bs4 import BeautifulSoup @@ -27,7 +28,20 @@ def proxy(video_id): return Response(f"Error fetching the page: {e}", status=500) soup = BeautifulSoup(r.text, "html.parser") - og_tags = soup.find_all("meta", property=lambda x: x) + thumbnail_url = None + if soup.find("meta", {"name": "server-response"}): + params = json.loads(soup.find("meta", {"name": "server-response"})["content"])["data"]["response"] # type: ignore + thumbnail_url = ( # Use highest quality thumbnail available + params["video"]["thumbnail"]["ogp"] + or params["video"]["thumbnail"]["player"] + or params["video"]["thumbnail"]["largeUrl"] + or params["video"]["thumbnail"]["middleUrl"] + or params["video"]["thumbnail"]["url"] + ) + og_tags = soup.find_all("meta", property=lambda x: x) # type: ignore + for tag in og_tags: + if tag.get("property") == "og:image": + tag["content"] = thumbnail_url og_tags_str = "\n".join(str(tag) for tag in og_tags) html_response = f"""