FourthTube 3DS: Difference between revisions
More actions
No edit summary Tag: Manual revert |
No edit summary |
||
| Line 4: | Line 4: | ||
|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=Erie Valley Software | |author=Erie Valley Software | ||
|lastupdated=2025/ | |lastupdated=2025/07/23 | ||
|type=Media Players | |type=Media Players | ||
|version=Beta | |version=Beta 33 | ||
|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 64: | Line 64: | ||
https://dlhb.gamebrew.org/3dshomebrews/images/FourthTube3DS-03.png | https://dlhb.gamebrew.org/3dshomebrews/images/FourthTube3DS-03.png | ||
==Changelog== | ==Changelog== | ||
'''Beta - 33''' | |||
* Smu1zel | |||
** Better error screen. | |||
** Formatted the entire codebase with clang-format. | |||
** Added an option to hide the pointer (the red box when you tap the screen). | |||
** FourthTube now uses a better color scheme, instead of using a dull blue nearly everywhere. | |||
** New banner for when a video isn't playing. Criticism is welcome. | |||
** Old ThirdTube config files now retain the scroll speed threshold value set when used in FourthTube. | |||
** Dropped the unused unicodetochar library. | |||
** Changed some font sizes. | |||
** Deleted some obsolete files. | |||
** Changed libctru library path to his. Updated it. | |||
** Some other general improvements to enhance the user's experience (TM) | |||
* 2ipper | |||
** Fixed the community tab. | |||
** Added timestamps. Tapping them in the description or comments will jump you to that timestamp automatically. | |||
** Added Live tab. | |||
** Added Shorts tab. | |||
** Changed the color of the Reload button. | |||
** Removed useless randomVisitorData function. | |||
** Translated the "Hide pointer" string into Japanese. | |||
** Added better resolution detection logic. | |||
** Fixed a bug where a video would end a few seconds early. | |||
* Dragontwo14 | |||
** Made some fixes to the German translation. | |||
** Translated the "Hide pointer" string into German. | |||
* cooolgamer | |||
** Translated the "Hide pointer" string into French. | |||
* Dxni | |||
** Translated the "Hide pointer" string into Italian. | |||
* Misino | |||
** Added a Spanish translation (will be implemented in the future). | |||
'''Beta - 32''' | '''Beta - 32''' | ||
* | *Smu1zel | ||
** Added an Italian translation (with help from Dxni) | ** Added an Italian translation (with help from Dxni) | ||
** Updated stb_image | ** Updated stb_image | ||
| Line 73: | Line 105: | ||
** Improved the German translation (with help from Dragontwo14) | ** Improved the German translation (with help from Dragontwo14) | ||
** Refactored time unit handling in the New tab | ** Refactored time unit handling in the New tab | ||
* | *2ipper | ||
** Fixed up the changelog feature | ** Fixed up the changelog feature | ||
** Fixed occasional performance issues when streaming >240p on clients other than iOS | ** Fixed occasional performance issues when streaming >240p on clients other than iOS | ||
| Line 104: | Line 136: | ||
*[https://github.com/erievs NCP 3.0] - Fixing the app after it stopped working in 2024. | *[https://github.com/erievs NCP 3.0] - Fixing the app after it stopped working in 2024. | ||
*[https://github.com/5GBurrito 5GBurrito] - Minor changes (project manager?). | *[https://github.com/5GBurrito 5GBurrito] - Minor changes (project manager?). | ||
*[https://github.com/2b-zipper | *[https://github.com/2b-zipper 2b-zipper] - 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, as well as a custom boot screen. | *[https://github.com/cooolgamer cooolgamer] - For the strings used in the French translation, as well as a custom boot screen. | ||
Revision as of 03:01, 26 July 2025
| FourthTube | |
|---|---|
| General | |
| Author | Erie Valley Software |
| Type | Media Players |
| Version | Beta 33 |
| License | GPL-3.0 |
| Last Updated | 2025/07/23 |
| 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
Changelog
Beta - 33
- Smu1zel
- Better error screen.
- Formatted the entire codebase with clang-format.
- Added an option to hide the pointer (the red box when you tap the screen).
- FourthTube now uses a better color scheme, instead of using a dull blue nearly everywhere.
- New banner for when a video isn't playing. Criticism is welcome.
- Old ThirdTube config files now retain the scroll speed threshold value set when used in FourthTube.
- Dropped the unused unicodetochar library.
- Changed some font sizes.
- Deleted some obsolete files.
- Changed libctru library path to his. Updated it.
- Some other general improvements to enhance the user's experience (TM)
- 2ipper
- Fixed the community tab.
- Added timestamps. Tapping them in the description or comments will jump you to that timestamp automatically.
- Added Live tab.
- Added Shorts tab.
- Changed the color of the Reload button.
- Removed useless randomVisitorData function.
- Translated the "Hide pointer" string into Japanese.
- Added better resolution detection logic.
- Fixed a bug where a video would end a few seconds early.
- Dragontwo14
- Made some fixes to the German translation.
- Translated the "Hide pointer" string into German.
- cooolgamer
- Translated the "Hide pointer" string into French.
- Dxni
- Translated the "Hide pointer" string into Italian.
- Misino
- Added a Spanish translation (will be implemented in the future).
Beta - 32
- Smu1zel
- Added an Italian translation (with help from Dxni)
- Updated stb_image
- Fixed some annoying spelling errors in the English translation
- Lowered the minimum speed limit for videos to 0.25 (to match YouTube)
- Improved the German translation (with help from Dragontwo14)
- Refactored time unit handling in the New tab
- 2ipper
- Fixed up the changelog feature
- Fixed occasional performance issues when streaming >240p on clients other than iOS
- Fixed the banner spin
- Other misc fixes
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-zipper - 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.
- Dxni - For the strings used in the Italian translation.
- 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.