ThirdTube 3DS: Difference between revisions

From GameBrew
(Created page with "{{Infobox-3DS-Homebrews | title = ThirdTube | image = https://dlhb.gamebrew.org/3dshomebrew/ThirdTube-3DS.jpg|250px | type = Media players | version = v0.2.0 | lastupdated = 2...")
 
 
(43 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Infobox-3DS-Homebrews
{{Infobox 3DS Homebrews
| title = ThirdTube
|title=ThirdTube
| image = https://dlhb.gamebrew.org/3dshomebrew/ThirdTube-3DS.jpg|250px
|image=thirdtube3ds02.png
| type = Media players
|description=A homebrew YouTube client (N3DS only).
| version = v0.2.0
|author=windows-server-2003
| lastupdated = 2021/09/13
|lastupdated=2024/03/08
| licence = Mixed
|type=Media players
| author = windows-server-2003
|version=0.5.4
| website = https://gbatemp.net/threads/release-thirdtube-a-homebrew-youtube-client-for-the-new-3ds.591696/
|license=GPL-3.0
| download = https://dlhb.gamebrew.org/3dshomebrew/ThirdTube-3DS.rar
|download=https://dlhb.gamebrew.org/3dshomebrews/thirdtube.7z
| source = https://github.com/windows-server-2003/ThirdTube
|website=https://gbatemp.net/threads/release-thirdtube-a-homebrew-youtube-client-for-the-new-3ds.591696
|source=https://github.com/windows-server-2003/ThirdTube
}}
}}
<youtube>fzhFpWm4KJ4</youtube>
ThirdTube is a work-in-progress homebrew YouTube client for the New Nintendo 3DS. The project is inspired by [https://newpipe.net NewPipe], it accesses the mobile version of YouTube, parses the important part of the downloaded html and plays the stream using the fast decoder taken from [[Video player 3DS|Video player for 3DS]] by Core-2-Extreme.
 
It does not run any javascripts or render html/css, so it’s significantly faster than YouTube on the browser. The name is derived from the fact that it is the third YouTube client on 3DS, following the official YouTube app (discontinued) and the new 3DS browser.
 
'''Note:''' This application is still in the alpha stage, you may encounter crashes and other bugs. If you find one of those, it would be helpful to open an issue on [https://github.com/windows-server-2003/ThirdTube/issues the GitHub repository].
 
==Features==
*Video Playback up to 360p.
*480p might be possible and could be considered in the future development.
*Livestreams and premiere videos support.
*Searching.
*Video suggestion.
*Comments.
*Captions.
*Local watch history and channel subscription.
*No ads. It's more like "ads are not implemented" rather than "ad-blocking functionality".
 
==Installation==
Available in 3DSX and CIA formats.
* CIA - Install the .cia with the CIA manager of your choice.
* 3DSX - Use the .3dsx with the Homebrew Launcher.
 
Require a 3DS (including 2DS) with [[Luma3DS|Luma3DS]] installed and [[DSP1_3DS|DSP dump]].
 
You can update the app from Settings > Update. If you see a message saying the app is up-to-date, try restarting the app.
 
==Controls==
B - Go back to the previous scene


== ThirdTube ==
Circle Pad Up/Down - Scroll


A work-in-progress homebrew YouTube client for the new 3DS!
L/R - Switch between tabs


== Instability Warning ==
Select+Start - Blackout the bottom screen


As this app is still in the alpha stage, you may and will encounter crashes and other bugs. If you find one of those, it would be helpful to open an issue on this GitHub repository.
'''In video player:'''


== Description ==
Left/Right - 10s seek


It accesses the mobile version of YouTube, parses the important part of the downloaded html and plays the stream using the decoder taken from [https://github.com/Core-2-Extreme/Video_player_for_3DS Video player for 3DS by Core-2-Extreme]. It does not run any javascripts or render html/css, so it’s significantly faster than YouTube on the browser. The name is derived from the fact that it is the third YouTube client on 3DS, following the official YouTube app (discontinued) and the new 3DS browser.
'''For Debug:'''


== Screenshots ==
Select+X - Toggle debug log


https://dlhb.gamebrew.org/3dshomebrew/ThirdTube-3DS-01.jpg
Select+Y - Toggle memory usage monitor
https://dlhb.gamebrew.org/3dshomebrew/ThirdTube-3DS-02.jpg
https://dlhb.gamebrew.org/3dshomebrew/ThirdTube-3DS-03.jpg
https://dlhb.gamebrew.org/3dshomebrew/ThirdTube-3DS-04.jpg


== Features ==
Select+R+A - Toggle FPS monitor


* 360p Video Playback 480p might be possible and could be considered in the future development
==Screenshots==
* Searching
https://dlhb.gamebrew.org/3dshomebrews/thirdtube.jpg
* Video suggestion
https://dlhb.gamebrew.org/3dshomebrews/thirdtube2.jpg
* Comments
https://dlhb.gamebrew.org/3dshomebrews/thirdtube3.jpg
* No ads As this app web-scrapes YouTube, it’s more like “”Ads are not implemented“” rather than “”We have ad-blocking functionality“”. Of course, I will never “”implement“” it :)


== Controls ==
==Media==
'''How to watch Youtube on 3DS with ThirdTube''' ([https://www.youtube.com/watch?v=fzhFpWm4KJ4 蓮。村長 / RYuta]) <br>
<youtube>fzhFpWm4KJ4</youtube>


Currently, most of the controls are done by touching. You can always use B button to go back to the previous scene. Using the hamburger menu at the right bottom, you can jump to the Search, Settings, or About scene or exit the app.
==Compatibility==
New 3DS (including a New 2DS) - at least 8.1.0-0 is needed (not tested on minimum system version).


== Requirements ==
==Changelog==
'''v0.5.3 2024/03/08'''
* Fixed channel page not loading.
* Fixed like count not showing up on video page.
* Replaced Home with Trending, since YouTube started to require tracking data(and at least one search/video watching with the tracking id) for Home.


A New 3DS (including a new 2DS) with [https://github.com/LumaTeam/Luma3DS Luma3DS] installed and [https://github.com/zoogie/DSP1 DSP1] run. I haven’t tested the minimum system version, but at least 8.1.0-0 is needed.
'''v0.5.2 2023/03/03'''
* This is a minor release fixing the broken video playback.


== Known issues ==
'''v0.5.2 2023/01/03'''
* Fixed random crashes soon after opening the app(only on .cia).
* Fixed search function broken.
* Fixed channel page failing to load additional videos.
* Fixed some subscribed channels disappearing(sorry for those who lost their subscription).
* Subscription and history files are now resistant to corruption.


* Extracted stream urls randomly return 403 and the video playback fails The reason is unknown, but a temporary workaround is to press Advanced Tab -&gt; Reload when this happens.
'''v0.5.1 2022/11/13'''
* Stream downloading randomly slows down (about 10% of the times) This is due to YouTube (probably deliberately) throttling the download speed. The workaround is the same as the 403 issue; reloading will fix it. Reference : https://github.com/ytdl-org/youtube-dl/issues/29326 It looks like the devs on youtube-dl found the solution, and I’m looking into it.
* Added configuration for C-pad scrolling speed.
* Long comments are cut This is intentionally done for a performance reason and probably fixable by, for example, folding the comments by default.
* Added mention of luma's new function of dumping DSP firmware when it'is not found.
* Added coloring in the debug log.
* Fixed channel page not loading videos.
* Fixed subscriber count text of the uploader on video pages.
* Fixed a bug in linebreak drawing which caused the DSP firmware error to be truncated.
* Improved performance of text drawing.
* Improved error message on network failure.
* Improved stability on network failure.
* Refactored several files.


=== Issues that won’t be fixed ===
'''v0.5.0 2022/05/25'''


* Old 3DS support I’m one who is obsessed about the support of “”legacy“” devices, but it turned out that old 3DS, without a hardware-decoding capability, cannot even play 144p at a constant 30 FPS. I regret to say that I have no plan to support the old 3DS.
Changes to existing features:
*Debug log keycombo is now SELECT + X instead of SELECT only.
*Subscription menu has been integrated into the Home page.
*Network framework option deleted(now libcurl is always used).
*Removed dislike counter from the app as YouTube no longer shows it.


== FAQs ==
Performance:
*HTTP/2 multiplexing support (subscription feed loading is now super fast).
*Use HTTP content encoding(brotli) (3x faster page loading in some cases).
*Use YouTube json endpoints(faster) instead of html page.
*Use icons that are smaller but still clear enough for 3DS.
*Faster YouTube parser.
*Faster characters drawing.
*Use rapidjson instead of json11.


* Does it make sense? The '''worst''' question in the console homebrew scene. Isn’t it just exciting to see your favorite videos playing on a 3DS?
Bugfixes/Improvements:
*Fixed high memory consumption after continuously playing a long video.
*Fixed watch history and channel subscription disappear when one of the items contains certain characters(such as double quotes).
*Fixed audio only mode getting enabled when it shouldn't.
*Fixed the unnecessary icon reloading in the subscription menu.
*Fixed some crashes.
*General error handling improvements.


== License ==
Internals:
*Updated stb_image to v2.27.
*Updated libcurl to 7.82.0.


You can use the code under the terms of the GNU General Public License GPL v3 or under the terms of any later revisions of the GPL. Refer to the provided LICENSE file for further information.
'''v0.4.1 2022/02/01'''
* The only change from the last release is the fix for the parse issue.


== Third-part licenses ==
'''v0.4.0 2021/11/28'''
* Separated the video player and the video page.
* This means you can now browse other videos while continuously playing one video.
* It also means that a video doesn't automatically play upon loading if another video is playing, so you have to press the "Play" button in the "General" tab.
* Added support for community posts in the channel page.
* Animated images are currently not supported.
* Added preamp, speed and pitch manipulators in the "Playback" tab.
* Added playlist tab in the channel page.
* The 3DS now doesn't go into sleep mode so that the app can continue the playback.
* While the lid is closed, you can still listen to the audio through the headphone plug but not from the speaker because there seems to be no way to prevent it from being disabled.
* Introduced thumb up/down icon to indicate like/dislike in the video page.
* Added like counters on comments and replies.
* Improved network performance when libcurl is chosen as the network framework and a redirect occurs on a video/audio stream.
* Improved the behavior when one of the subscribed channels changes its icon.
* Improved the performance and memory usage of the subscribed channels scene.
* Improved the behavior of option selector when you grab it and scroll.
* Made it to retry when a minor network error occurs.
* Fixed random crashes when trying to play a video.
* Tips: it had the possibility of crashing after loading 17th video counting from the startup of the app.
* Fixed crashes when exiting the app while loading something (video page, comments continuation, etc.).
* Fixed the throttling by YouTube which came back due to a change in one of their javascripts.
* Fixed long loading and possible crashes when trying to seek near the end of the video.
* Fixed terrible audio for some video [https://github.com/windows-server-2003/ThirdTube/issues/53 (#53)].
* Fixed memory leaks when video loading fails.
* Implemented a workaround for [https://github.com/windows-server-2003/ThirdTube/issues/47 #47] (240p or below fails to load for some videos).


'''[https://ffmpeg.org/ FFmpeg]'''
'''v0.3.0 2021/10/12'''
* Added support for playlists.
** Now playlists appear both in search results and suggestions.
* Added local watch history (see hamburger menu -> History).
** You can disable history recording/clear history in settings.
* Added local subscription and ability to load recent videos from the subscribed channels (see hamburger menu -> Subscription).
* Added Control tab in the video player.
* Added video quality selector and audio-only mode selector in Control tab.
** These options will save data usage and make the playback smooth when using a slow connection.
* Added yet another network framework : libcurl (it should be more stable?).
* Added the button to directly input URL, next to the search box..
* Added seeking by 10 seconds by pressing the arrow button left/right.
* Added scrolling by using the d-pad up/down.
* Added video pages caching.
* Added the reason when a video is unplayable (e.g. private, removed, copyright takedown).
* Added video duration overlay text in the video list of a channel.
* Improved performance when opening the software keyboard.
* Improved the behavior when reaching the end of the video.
* Improved the behavior of the progress bar when seeking.
* Improved stability.
* Reorganized the settings menu.
* Removed Advanced tab.
** Debug info can still be seen in Control tab if enabled in settings.
** The texture filter toggle button has been moved to settings with the name "Linear video filter".
** The reload button has been moved to Control tab.
* Fixed showing "Settings" in the hamburger menu when you are already opening settings.
* Fixed httpcContext resource leaking when redirection occurs, which caused the app to stop working.
* Fixed broken playback when playing videos with non-standard heights.


by the FFmpeg developers under GNU Lesser General Public License (LGPL) version 2.1 The source code can be found in library/FFmpeg/FFmpeg. ### [https://github.com/dropbox/json11 json11] by Dropbox under MIT License ### [https://github.com/devkitPro/libctru libctru] by devkitPro under zlib License ### [https://github.com/nothings/stb/ stb] by Sean Barrett under MIT License and Public Domain
[https://github.com/windows-server-2003/ThirdTube/releases Release notes.]


== Credits ==
==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, making it possible to port some of the code without difficulty.


* 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.
==External links==
* dixy52-beep For in-app textures
* GitHub - https://github.com/windows-server-2003/ThirdTube
* [https://github.com/Poketubepoggu PokéTube] For the icon and the banner
* GBAtemp - https://gbatemp.net/threads/release-thirdtube-a-homebrew-youtube-client-for-the-new-3ds.591696
* 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.
* Discord - https://discord.gg/CVcThBCQJM
* 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.


[[Category:3DS homebrew applications]]
[[Category:3DS homebrew applications]]
[[Category:Homebrew media players on 3DS]]
[[Category:Homebrew media players on 3DS]]

Latest revision as of 08:29, 10 March 2024

ThirdTube
Thirdtube3ds02.png
General
Authorwindows-server-2003
TypeMedia players
Version0.5.4
LicenseGPL-3.0
Last Updated2024/03/08
Links
Download
Website
Source

ThirdTube is a work-in-progress homebrew YouTube client for the New Nintendo 3DS. The project is inspired by NewPipe, it accesses the mobile version of YouTube, parses the important part of the downloaded html and plays the stream using the fast decoder taken from Video player for 3DS by Core-2-Extreme.

It does not run any javascripts or render html/css, so it’s significantly faster than YouTube on the browser. The name is derived from the fact that it is the third YouTube client on 3DS, following the official YouTube app (discontinued) and the new 3DS browser.

Note: This application is still in the alpha stage, you may encounter crashes and other bugs. If you find one of those, it would be helpful to open an issue on the GitHub repository.

Features

  • Video Playback up to 360p.
  • 480p might be possible and could be considered in the future development.
  • Livestreams and premiere videos support.
  • Searching.
  • Video suggestion.
  • Comments.
  • Captions.
  • Local watch history and channel subscription.
  • No ads. It's more like "ads are not implemented" rather than "ad-blocking functionality".

Installation

Available in 3DSX and CIA formats.

  • CIA - Install the .cia with the CIA manager of your choice.
  • 3DSX - Use the .3dsx with the Homebrew Launcher.

Require a 3DS (including 2DS) with Luma3DS installed and DSP dump.

You can update the app from Settings > Update. If you see a message saying the app is up-to-date, try restarting the app.

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

For Debug:

Select+X - Toggle debug log

Select+Y - Toggle memory usage monitor

Select+R+A - Toggle FPS monitor

Screenshots

thirdtube.jpgthirdtube2.jpgthirdtube3.jpg

Media

How to watch Youtube on 3DS with ThirdTube (蓮。村長 / RYuta)

Compatibility

New 3DS (including a New 2DS) - at least 8.1.0-0 is needed (not tested on minimum system version).

Changelog

v0.5.3 2024/03/08

  • Fixed channel page not loading.
  • Fixed like count not showing up on video page.
  • Replaced Home with Trending, since YouTube started to require tracking data(and at least one search/video watching with the tracking id) for Home.

v0.5.2 2023/03/03

  • This is a minor release fixing the broken video playback.

v0.5.2 2023/01/03

  • Fixed random crashes soon after opening the app(only on .cia).
  • Fixed search function broken.
  • Fixed channel page failing to load additional videos.
  • Fixed some subscribed channels disappearing(sorry for those who lost their subscription).
  • Subscription and history files are now resistant to corruption.

v0.5.1 2022/11/13

  • Added configuration for C-pad scrolling speed.
  • Added mention of luma's new function of dumping DSP firmware when it'is not found.
  • Added coloring in the debug log.
  • Fixed channel page not loading videos.
  • Fixed subscriber count text of the uploader on video pages.
  • Fixed a bug in linebreak drawing which caused the DSP firmware error to be truncated.
  • Improved performance of text drawing.
  • Improved error message on network failure.
  • Improved stability on network failure.
  • Refactored several files.

v0.5.0 2022/05/25

Changes to existing features:

  • Debug log keycombo is now SELECT + X instead of SELECT only.
  • Subscription menu has been integrated into the Home page.
  • Network framework option deleted(now libcurl is always used).
  • Removed dislike counter from the app as YouTube no longer shows it.

Performance:

  • HTTP/2 multiplexing support (subscription feed loading is now super fast).
  • Use HTTP content encoding(brotli) (3x faster page loading in some cases).
  • Use YouTube json endpoints(faster) instead of html page.
  • Use icons that are smaller but still clear enough for 3DS.
  • Faster YouTube parser.
  • Faster characters drawing.
  • Use rapidjson instead of json11.

Bugfixes/Improvements:

  • Fixed high memory consumption after continuously playing a long video.
  • Fixed watch history and channel subscription disappear when one of the items contains certain characters(such as double quotes).
  • Fixed audio only mode getting enabled when it shouldn't.
  • Fixed the unnecessary icon reloading in the subscription menu.
  • Fixed some crashes.
  • General error handling improvements.

Internals:

  • Updated stb_image to v2.27.
  • Updated libcurl to 7.82.0.

v0.4.1 2022/02/01

  • The only change from the last release is the fix for the parse issue.

v0.4.0 2021/11/28

  • Separated the video player and the video page.
  • This means you can now browse other videos while continuously playing one video.
  • It also means that a video doesn't automatically play upon loading if another video is playing, so you have to press the "Play" button in the "General" tab.
  • Added support for community posts in the channel page.
  • Animated images are currently not supported.
  • Added preamp, speed and pitch manipulators in the "Playback" tab.
  • Added playlist tab in the channel page.
  • The 3DS now doesn't go into sleep mode so that the app can continue the playback.
  • While the lid is closed, you can still listen to the audio through the headphone plug but not from the speaker because there seems to be no way to prevent it from being disabled.
  • Introduced thumb up/down icon to indicate like/dislike in the video page.
  • Added like counters on comments and replies.
  • Improved network performance when libcurl is chosen as the network framework and a redirect occurs on a video/audio stream.
  • Improved the behavior when one of the subscribed channels changes its icon.
  • Improved the performance and memory usage of the subscribed channels scene.
  • Improved the behavior of option selector when you grab it and scroll.
  • Made it to retry when a minor network error occurs.
  • Fixed random crashes when trying to play a video.
  • Tips: it had the possibility of crashing after loading 17th video counting from the startup of the app.
  • Fixed crashes when exiting the app while loading something (video page, comments continuation, etc.).
  • Fixed the throttling by YouTube which came back due to a change in one of their javascripts.
  • Fixed long loading and possible crashes when trying to seek near the end of the video.
  • Fixed terrible audio for some video (#53).
  • Fixed memory leaks when video loading fails.
  • Implemented a workaround for #47 (240p or below fails to load for some videos).

v0.3.0 2021/10/12

  • Added support for playlists.
    • Now playlists appear both in search results and suggestions.
  • Added local watch history (see hamburger menu -> History).
    • You can disable history recording/clear history in settings.
  • Added local subscription and ability to load recent videos from the subscribed channels (see hamburger menu -> Subscription).
  • Added Control tab in the video player.
  • Added video quality selector and audio-only mode selector in Control tab.
    • These options will save data usage and make the playback smooth when using a slow connection.
  • Added yet another network framework : libcurl (it should be more stable?).
  • Added the button to directly input URL, next to the search box..
  • Added seeking by 10 seconds by pressing the arrow button left/right.
  • Added scrolling by using the d-pad up/down.
  • Added video pages caching.
  • Added the reason when a video is unplayable (e.g. private, removed, copyright takedown).
  • Added video duration overlay text in the video list of a channel.
  • Improved performance when opening the software keyboard.
  • Improved the behavior when reaching the end of the video.
  • Improved the behavior of the progress bar when seeking.
  • Improved stability.
  • Reorganized the settings menu.
  • Removed Advanced tab.
    • Debug info can still be seen in Control tab if enabled in settings.
    • The texture filter toggle button has been moved to settings with the name "Linear video filter".
    • The reload button has been moved to Control tab.
  • Fixed showing "Settings" in the hamburger menu when you are already opening settings.
  • Fixed httpcContext resource leaking when redirection occurs, which caused the app to stop working.
  • Fixed broken playback when playing videos with non-standard heights.

Release notes.

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, making it possible to port some of the code without difficulty.

External links

Advertising: