From b8b1944964598315d58e6aab97db1eb3d0deac60 Mon Sep 17 00:00:00 2001 From: TheErrorExe Date: Sat, 1 Feb 2025 23:13:44 +0100 Subject: [PATCH] redesign --- .gitignore | 4 +- README.md | 25 ++-- favicon.ico | Bin 32 -> 62358 bytes loading.gif | Bin 0 -> 2474 bytes requirements.txt | 6 +- revivetube.py | 59 ++------ site_storage/index_template.html | 159 ++++++++++---------- site_storage/loading_template.html | 168 ++++++++++++++-------- site_storage/watch_standard_template.html | 49 ------- site_storage/watch_wii_template.html | 153 ++++++++++++++------ 10 files changed, 324 insertions(+), 299 deletions(-) create mode 100644 loading.gif delete mode 100644 site_storage/watch_standard_template.html diff --git a/.gitignore b/.gitignore index edb9d07..4908179 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ token.txt .venv .idea -__pycache__ \ No newline at end of file +__pycache__ +sigma +nohup.out \ No newline at end of file diff --git a/README.md b/README.md index 42b81be..d4cabc3 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,26 @@ # ReviveTube - -# WARNING: before starting the server, remove the -proxy command in revivetube.py - Watch YouTube on your Wii! -ReviveTube by ReviveMii +ReviveTube: http://yt.old.errexe.xyz/ ReviveMii Homepage: https://revivemii.errexe.xyz -Use it without self hosting: http://yt.old.errexe.xyz/ +# Self Hosting -Open Source Software used: http://yt.old.errexe.xyz/licenses.html +WARNING: before starting the server, remove the --proxy command in revivetube.py -# Use it yourself -Go to console.cloud.google.com and create a new application with the youtube data v3 api. paste the api key in token.txt. Install the Requirements in the beginning of revivetube.py. Start revivetube.py \ No newline at end of file +Go to https://console.cloud.google.com/ and create a new application with the YouTube Data v3 API. + +Click on Credentials and click on new, and create a new API Key. Paste the API Key in token.txt + +Install the Requirements: +```bash +pip install -r requirements.txt +``` +Search for "--proxy" in revivetube.py and remove the command + +Start the Server: +```bash +python3 revivetube.py +``` \ No newline at end of file diff --git a/favicon.ico b/favicon.ico index f5f1ce68c96c22eb334f0d04bebbc488fcb21d01..3a5a92965e99f6a9736d9713d0cc736e6974e4eb 100644 GIT binary patch literal 62358 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

    udkuK-11J8GivwyFqA9L}kFZiRP*=pk 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 Y@XG)Ep#HbNZWRCdmH+vf`rp3%Ka7>%4gdfE literal 32 ncmWH_%yiDr%S%lzF)~po$Vp8sPE|f^NXp4i&gKFDyyOcY diff --git a/loading.gif b/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..d2a302392a1a67478dde3574349d0467406cc358 GIT binary patch literal 2474 zcmbVMX;>5I7M^U#A}ETAB6LU)rIKVa*#jsc37di_h=`y}G6RIHCIblqN(2?CV4-M5 z#j>af=&f6=fVQGmtb$9`y40dquhwcU_Ihh;Yo(I__CELF>5n`4k(uwD_nh~<=bSGp zCQ>9uSU?c)f(FFK#)`$_prD`~gFBqh0{flC8o<9lwRCWB5E$+8A9RaXBqhqE2@046 zQAmUjag-950Ll>@A^t<>T8)TGgW;eO%TnvZ=mTA!(?K;FMqk2@gW`-bEL$DD%7i7Z ziceCl(x}8JeeN7E)GD#+j5-WQK&wuxH%qKxbObdhF$wW*KW5WGhYPL=qf6}u(4JFf zFkv8{C19#JToEV~vp9UQ2<8QYFvJnCAu*f7V?rDWB$hxNaQLAU*-U7rWRW~_I2Z91 zM$g7^qlC@2SS&0Hmt`q2nW615&R zSj<88HVsuR$4u%x42?7ybf80LiFyG$s-qSY-rz_93I@m4!!WR{LJb4 zdBVE`D_xz^PM>8O<$*r)AN}y^eb?4T(7o%jzJoR}WwzhMmTBQveXi`e{_wEdhVuQ- zq`R+uVT78<}U%B2iZz1G&iYl1Z&`88I} zQ*Fzo$C1dE0U+Q@ z)KQy~aQrnC8a|>v?DzHc4E|%8T|p_g)WR^-~Ln` z>bpJOk5`cAeth(S#AAR3O-y zAnG?nG@9D^2NVf166K6d?l?ZkCqN>*7_g`t|CSh8jrS*_65)dX1TXQ&%9cFf;dOPynxqLGtECt4HT zdGdFHsMluiL{i?H`7`rCQ5BZAvlaL7y%QgPKw!RkOS$=JSNOd#9o1!%8E~t7nj)}v z-3@$y&9&{5qKbcvzopt+){dRN&k~mJzFm6j;GVNCIdw1mKVH4$l25^cacT+Gws;3RXfJl3!nhO9)KG$#WdpF&Dr%(Mtg0;#j$vR-A>^C$KE-6*^FqY zcshgRz{5niU_06ca0LLeYwf1i3(v-pQo6l{w}TMLjTkzInKCunHTF0;f>d0_&uXy@ zULT)Kiq7$#N{u7`H7)C2eu5|B5$|P z&7Pj}j(z)1ebFPQe$7AG^|Ie7kJjzp3_GPgJQy&sH)AM^7m$v Hfsj7|x29Xd literal 0 HcmV?d00001 diff --git a/requirements.txt b/requirements.txt index 76a77cb..518cbd5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -Flask==3.1.0 -Requests==2.32.3 -yt_dlp==2024.12.23 +Flask +Requests +yt_dlp \ No newline at end of file diff --git a/revivetube.py b/revivetube.py index 9ae76c3..2323ac4 100644 --- a/revivetube.py +++ b/revivetube.py @@ -144,59 +144,13 @@ def get_video_comments(video_id, max_results=20): return comments except requests.exceptions.RequestException as e: - print(f"Fehler beim Abrufen der Kommentare: {str(e)}") + print(f"Can't fetch Comments: {str(e)}") return [] -@app.route("/switch_wii", methods=["GET"]) -def switch_wii(): - video_id = request.args.get("video_id") - if not video_id: - return "Missing Video-ID.", 400 - - headers = { - "User-Agent": "Mozilla/5.0 (Nintendo Wii; U; ; en) Opera/9.30 (Nintendo Wii)" - } - - response = requests.get(f"http://localhost:5000/watch?video_id={video_id}", headers=headers, timeout=2) - - if response.status_code == 200: - return response.text - else: - return "Can't start DEBUG Mode.", 500 - - -@app.route('/test.swf') -def download_file(): - return send_file( - './test.swf', - mimetype='application/x-shockwave-flash', - as_attachment=True, - download_name='test.swf' - ) - - -@app.route("/switch_n", methods=["GET"]) -def switch_n(): - video_id = request.args.get("video_id") - if not video_id: - return "Missing Video-ID.", 400 - - headers = { - "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" - } - - response = requests.get(f"http://localhost:5000/watch?video_id={video_id}", headers=headers, timeout=2) - - if response.status_code == 200: - return response.text - else: - return "Can't start DEBUG Mode.", 500 - - @app.route("/", methods=["GET"]) -def index_wiitv(): +def index(): query = request.args.get("query") results = None @@ -307,14 +261,17 @@ def process_video(video_id): video_status[video_id] = {"status": "downloading"} + + + with tempfile.TemporaryDirectory() as temp_dir: temp_video_path = os.path.join(temp_dir, f"{video_id}.%(ext)s") command = [ "yt-dlp", - "-f", "worstvideo+worstaudio", - "--proxy", "http://localhost:4000", "-o", temp_video_path, - f"https://m.youtube.com/watch?v={video_id}" + "--proxy", "http://localhost:4000", + "-f", "worstvideo+worstaudio", + f"https://youtube.com/watch?v={video_id}" ] subprocess.run(command, check=True) diff --git a/site_storage/index_template.html b/site_storage/index_template.html index 4b1bddd..b7fbb9a 100644 --- a/site_storage/index_template.html +++ b/site_storage/index_template.html @@ -1,116 +1,109 @@ - - + ReviveTube by ReviveMii - -

    ReviveTube by ReviveMii

    -

    A YouTube App for the Wii

    -
    - - -
    -{% if results %} -

    Search Results

    -
    - {% for video in results %} - -{% endif %} -

    Visit ReviveMii

    -

    \/ Scroll down \/

    -

    We are NOT affiliated with Nintendo or YouTube. This app uses code from Wiinet.xyz. For more - information, scroll down to Open Source Software.

    -

    It's recommended to bookmark this page. Some sites may take longer to load.

    -Terms of Service and Privacy Policy (Last Updated: 7. Dec - 2024 12:41 CET)

    -Source Code

    -Discord Server [Use a Compatible Device] -

    Version: v2 Beta (Sometimes I forget to update the Version Number)

    -Open Source Software Used in This App -
    -Contact -
    -Report Bugs & Feedback +
    + {% if results %} +

    Search Results

    +
    + {% for video in results %} +
    + + {{ video['title'] }} + +
    {{ video['title'] }}
    +
    By: {{ video['uploader'] }}
    +
    Duration: {{ video['duration'] }}
    +
    + {% endfor %} +
    + {% endif %} +
    +

    \/ Scroll down \/

    +

    Visit the ReviveMii Project

    +

    We are NOT affiliated with Nintendo or YouTube.

    +

    + Source Code | + Discord Server | + Contact +

    - \ No newline at end of file + diff --git a/site_storage/loading_template.html b/site_storage/loading_template.html index 72e941d..0d1998e 100644 --- a/site_storage/loading_template.html +++ b/site_storage/loading_template.html @@ -6,8 +6,46 @@ Loading... -

    Loading

    -Loading... -

    Fetching Info...

    - -
    -Loading Screen will NOT work in Dolphin Emulator.

    Long Video = Longer Download and - Converting.

    For videos longer than 7 minutes, there is a chance that they won’t play.
    - + function updateProgress(status) { + if (status.status === 'complete') { + loadingGif.style.display = 'none'; + progressText.innerHTML = 'Done!'; + goButton.style.display = 'inline'; + } else if (status.status === 'downloading') { + progressText.innerHTML = 'The Server is Downloading...'; + } else if (status.status === 'converting') { + progressText.innerHTML = 'The Server is Converting video...'; + } else if (status.status === 'converting for Wii') { + progressText.innerHTML = 'The Server is Converting for Wii...'; + } else { + progressText.innerHTML = 'The Server was unable to process the video! Report the Bug in the Discord Server.
    Error Details: Error on Video with ID: {{ video_id }}
    Discord Server on ReviveMii Homepage Footer'; + } + } + + function startVideo() { + window.location.href = '/watch?video_id=' + videoId; + } + + window.onload = function () { + simulateLoading(); + }; + - \ No newline at end of file + diff --git a/site_storage/watch_standard_template.html b/site_storage/watch_standard_template.html deleted file mode 100644 index abc970a..0000000 --- a/site_storage/watch_standard_template.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - {{ title }} - - - -Please access this Site on a Wii - - \ No newline at end of file diff --git a/site_storage/watch_wii_template.html b/site_storage/watch_wii_template.html index f65194a..a1514e0 100644 --- a/site_storage/watch_wii_template.html +++ b/site_storage/watch_wii_template.html @@ -1,68 +1,127 @@ - - + {{ title }} - -
    - - - - - -
    -

    {{ title }}

    -

    Uploaded by: {{ uploader }}

    -

    Views: {{ viewCount }}

    -

    Likes: {{ likeCount }}

    -

    Upload Date: {{ publishedAt }}

    -Skip Description -

    Description:

    -

    {{ description | safe }}

    -

    Comments:

    -
    - {% if comments %} - {% for comment in comments %} -
    -

    {{ comment.author }} posted:

    -

    {{ comment.text|safe }}

    -

    Likes: {{ comment.likeCount }} | Post date: {{ comment.publishedAt - }}

    + +
    + +
    +
    + + +
    +
    +
    +
    +
    + + + + + +
    +

    {{ title }}

    +

    Uploaded by: {{ uploader }}

    +

    Views: {{ viewCount }}

    +

    Likes: {{ likeCount }}

    +

    Upload Date: {{ publishedAt }}

    + Skip Description +

    Description:

    +

    {{ description | safe }}

    +

    Comments:

    +
    + {% if comments %} + {% for comment in comments %} +
    +

    {{ comment.author }} posted:

    +

    {{ comment.text|safe }}

    +

    Likes: {{ comment.likeCount }} | Post date: {{ comment.publishedAt }}

    +
    + {% endfor %} + {% else %} +

    No Comments.

    + {% endif %} +
    - {% endfor %} - {% else %} -

    No Comments.

    - {% endif %} -
    - \ No newline at end of file +