Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

FourthTube 3DS: Difference between revisions

From GameBrew
No edit summary
No edit summary
Line 3: Line 3:
|image=Thirdtube3ds02.png
|image=Thirdtube3ds02.png
|description=Another work-in-progress fork of the homebrew YouTube client for the 3DS called ThirdTube.
|description=Another work-in-progress fork of the homebrew YouTube client for the 3DS called ThirdTube.
|author=ErieVS
|author=Erie Valley Software
|lastupdated=2025/01/21
|lastupdated=2025/02/03
|type=Media Players
|type=Media Players
|version=Beta 30
|version=Beta 31
|license=GPL-3.0
|license=GPL-3.0
|download=https://dlhb.gamebrew.org/3dshomebrews/FourthTube3DS.7z
|download=https://dlhb.gamebrew.org/3dshomebrews/FourthTube3DS.7z
Line 35: Line 35:
==Installation==
==Installation==
Requires 3DS (including 2DS) with [[Luma3DS]] (at least 8.1.0-0) and [[DSP1 3DS|DSP1]].
Requires 3DS (including 2DS) with [[Luma3DS]] (at least 8.1.0-0) and [[DSP1 3DS|DSP1]].
To migrate data from [[ThirdTube 3DS|ThirdTube]] to FourthTube, rename the /3ds/ThirdTube/ folder to FourthTube. If you were using an unofficial fork of ThirdTube (such as a translation), this folder may be named differently.


== Controls ==
== Controls ==
Line 63: Line 65:


==Changelog==  
==Changelog==  
'''Beta - 31'''
* Smu1zel
** Rewrote community posts workaround to take advantage of Google's parameters (images load much faster and take up less memory, at the cost of a small drop in quality).
** Added code to wait up to 20 seconds for the 3DS to connect to Wi-Fi at launch (avoids some race conditions).
** Added visionOS app/spoof data.
** Upgraded nghttp2 to version 1.64.0.
** Some more QoL internal improvements to enhance the developer's experience.
* 2ipper
** Added code to fetch visitorData from YouTube's servers directly (fixes the infamous gray Play button again).
** Added the ability to see the latest changelog in the Update tab.
** Fixed subscriber count in the Subscribed tab.
** Search fixes.
* cooolgamer
** Created a custom boot screen.
'''Beta - 30'''
'''Beta - 30'''
* Added option to switch app data (iOS, Android VR) to Settings -> Advanced.
* Added option to switch app data (iOS, Android VR) to Settings -> Advanced.
Line 69: Line 86:


== Credits ==
== Credits ==
=== FourthTube ===
'''FourthTube credits:'''
* Core 2 Extreme - For [https://github.com/Core-2-Extreme/Video_player_for_3DS Video player for 3DS] which this app is based on. Needless to say, the video playback functionality is essential for this app, and it would not have been possible to develop this software without him spending his time optimizing the code sometimes even with assembly and looking into HW decoding on the new 3DS.
* dixy52-beep - For in-app textures.
* [https://github.com/Poketubepoggu PokéTube] - For the icon and the banner.
* The contributors of [https://github.com/ytdl-org/youtube-dl youtube-dl] - As a reference about YouTube webpage parsing. It was especially helpful for the deobfuscation of ciphered signatures.
* The contributors of [https://github.com/pytube/pytube pytube] - As a reference about YouTube webpage parsing. Thanks to its strict dependency-free policy, I was able to port some of the code without difficulty.
 
=== ThirdTube ===
*[https://github.com/windows-server-2003 WindowsServer2003] - The creator of ThirdTube.
*[https://github.com/windows-server-2003 WindowsServer2003] - The creator of ThirdTube.
*[https://github.com/Smu1zel Smu1zel] - Figured out the line of code that needed to be changed and tested the change out, fixing the app after it stopped working in 2024.
*[https://github.com/Smu1zel Smu1zel] - Figured out the line of code that needed to be changed and tested the change out, fixing the app after it stopped working in 2024.
Line 83: Line 93:
*[https://github.com/2b-zipper 2B_enpitsu] - New banner, watch history fix, new icon, 480p support, some other fixes, and a fair bit more (thank you so much!).
*[https://github.com/2b-zipper 2B_enpitsu] - New banner, watch history fix, new icon, 480p support, some other fixes, and a fair bit more (thank you so much!).
*[https://github.com/ItsFrocat ItsFrocat] & [https://github.com/Dragontwo14 Dragontwo14] - For the strings used in the German translation.
*[https://github.com/ItsFrocat ItsFrocat] & [https://github.com/Dragontwo14 Dragontwo14] - For the strings used in the German translation.
*[https://github.com/cooolgamer cooolgamer] - For the strings used in the French translation.
*[https://github.com/cooolgamer cooolgamer] - For the strings used in the French translation, as well as a custom boot screen.
*[https://returnyoutubedislike.com/install returndislike] - Used for dislikes.
*[https://returnyoutubedislike.com/install returndislike] - Used for dislikes.
'''ThirdTube credits:'''
* Core 2 Extreme - For [https://github.com/Core-2-Extreme/Video_player_for_3DS Video player for 3DS] which this app is based on. Needless to say, the video playback functionality is essential for this app, and it would not have been possible to develop this software without him spending his time optimizing the code sometimes even with assembly and looking into HW decoding on the new 3DS.
* dixy52-beep - For in-app textures.
* [https://github.com/Poketubepoggu PokéTube] - For the icon and the banner.
* The contributors of [https://github.com/ytdl-org/youtube-dl youtube-dl] - As a reference about YouTube webpage parsing. It was especially helpful for the deobfuscation of ciphered signatures.
* The contributors of [https://github.com/pytube/pytube pytube] - As a reference about YouTube webpage parsing. Thanks to its strict dependency-free policy, I was able to port some of the code without difficulty.


== External links ==
== External links ==
* GitHub - https://github.com/erievs/FourthTube
* GitHub - https://github.com/erievs/FourthTube
* GBAtemp - https://gbatemp.net/threads/fourthtube-for-now-a-fork-of-thirdtube-that-works.660775/
* GBAtemp - https://gbatemp.net/threads/fourthtube-for-now-a-fork-of-thirdtube-that-works.660775/

Revision as of 03:14, 9 February 2025

FourthTube
General
AuthorErie Valley Software
TypeMedia Players
VersionBeta 31
LicenseGPL-3.0
Last Updated2025/02/03
Links
Download
Website
Source

FourthTube is a fork of ThirdTube, which had become non-functional around July 2024. The developer of FourthTube, also known for creating NexTube, collaborated with members of the ThirdTube Discord server to implement a fix, resulting in the creation of FourthTube.

ThirdTube uses a decrypter and manipulates certain JavaScript files to access YouTube's player without encountering access issues. However, this method proved to be unstable over time. In contrast, FourthTube employs a different approach by sending data that mimics the iOS YouTube app, a technique also used by tools like YT-DLP.

Features

  • Video Playback up to 480p.
  • Livestreams and premiere videos support.
  • Searching.
  • Video suggestion.
  • Comments.
  • Captions.
  • Local watch history and channel subscription.
  • No ads.

Installation

Requires 3DS (including 2DS) with Luma3DS (at least 8.1.0-0) and DSP1.

To migrate data from ThirdTube to FourthTube, rename the /3ds/ThirdTube/ folder to FourthTube. If you were using an unofficial fork of ThirdTube (such as a translation), this folder may be named differently.

Controls

B - Go back to the previous scene

Circle Pad Up/Down - Scroll

L/R - Switch between tabs

Select+Start - Blackout the bottom screen

In video player:

Left/Right - 10s seek

ZL/ZR - 5s seek

Debugging:

Select+X - Toggle debug log

Select+Y - Toggle memory usage monitor

Select+R+A - Toggle FPS monitor

Screenshots

FourthTube3DS-03.png

Changelog

Beta - 31

  • Smu1zel
    • Rewrote community posts workaround to take advantage of Google's parameters (images load much faster and take up less memory, at the cost of a small drop in quality).
    • Added code to wait up to 20 seconds for the 3DS to connect to Wi-Fi at launch (avoids some race conditions).
    • Added visionOS app/spoof data.
    • Upgraded nghttp2 to version 1.64.0.
    • Some more QoL internal improvements to enhance the developer's experience.
  • 2ipper
    • Added code to fetch visitorData from YouTube's servers directly (fixes the infamous gray Play button again).
    • Added the ability to see the latest changelog in the Update tab.
    • Fixed subscriber count in the Subscribed tab.
    • Search fixes.
  • cooolgamer
    • Created a custom boot screen.

Beta - 30

  • Added option to switch app data (iOS, Android VR) to Settings -> Advanced.
  • Update iOS client.
  • Added visitor data (YouTube requests). (Comment From Me ErieVS: I have no idea why I didn't think about doing this to begin with, I used it with MangoTube, guess I just forgot, anwyas huge thanks to 2ipper for this fix!)

Credits

FourthTube credits:

  • WindowsServer2003 - The creator of ThirdTube.
  • Smu1zel - Figured out the line of code that needed to be changed and tested the change out, fixing the app after it stopped working in 2024.
  • NCP 3.0 - Fixing the app after it stopped working in 2024.
  • 5GBurrito - Minor changes (project manager?).
  • 2B_enpitsu - New banner, watch history fix, new icon, 480p support, some other fixes, and a fair bit more (thank you so much!).
  • ItsFrocat & Dragontwo14 - For the strings used in the German translation.
  • cooolgamer - For the strings used in the French translation, as well as a custom boot screen.
  • returndislike - Used for dislikes.

ThirdTube credits:

  • Core 2 Extreme - For Video player for 3DS which this app is based on. Needless to say, the video playback functionality is essential for this app, and it would not have been possible to develop this software without him spending his time optimizing the code sometimes even with assembly and looking into HW decoding on the new 3DS.
  • dixy52-beep - For in-app textures.
  • PokéTube - For the icon and the banner.
  • The contributors of youtube-dl - As a reference about YouTube webpage parsing. It was especially helpful for the deobfuscation of ciphered signatures.
  • The contributors of pytube - As a reference about YouTube webpage parsing. Thanks to its strict dependency-free policy, I was able to port some of the code without difficulty.

External links

Advertising: