A work-in-progress homebrew YouTube client for new 3DS

ThirdTube

A work-in-progress homebrew YouTube client for the new 3DS
GBAtemp Thread

Instability Warning

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.

Description

It accesses the mobile version of YouTube, parses the important part of the downloaded html and plays the stream using the 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.

Screenshots


Features

  • 360p Video Playback
    480p might be possible and could be considered in the future development
  • Searching
  • Video suggestion
  • Comments
  • 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

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.

Requirments

A New 3DS (including a new 2DS) with Luma3DS installed and DSP1 run.
I haven't tested the minimum system version, but at least 8.1.0-0 is needed.

Known issues

  • Extracted stream urls randomly return 403 and the video playback fails
    The reason is unknown, but a temporary workaround is to press Advanced Tab -> Reload when this happens.
  • 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.
  • Long comments are cut
    This is intentionally done for a performance reason and probably fixable by, for example, folding the comments by default.

Issues that won't be fixed

  • 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.

FAQs

  • 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?

License

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.

Third-part licenses

FFmpeg

by the FFmpeg developers under GNU Lesser General Public License (LGPL) version 2.1
The source code can be found in library/FFmpeg/FFmpeg.

json11

by Dropbox under MIT License

libctru

by devkitPro under zlib License

stb

by Sean Barrett under MIT License and Public Domain

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.
  • 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.
Owner
Comments
  • Debugging info glitches when you enable it before you play a video

    Debugging info glitches when you enable it before you play a video

    So I was just watching a random video, and it started glitching out, and it crashed. image

    So I tried again, and I recorded it (sorry for the self promo lol). It didnt crash, but it was pretty interesting. video

  • Empty When Loading

    Empty When Loading

    After Sometime When you select a video every goes how it should just suddenly before the video even starts A Empty Error Message Appears So you select off the video and select another one and same thing happens the only way to fix it is by exiting And Entering Again , Imagine Time Will You Save If you didn't do that processes.

  • No Video's loading

    No Video's loading

    Basically I've been using this 2ds xl and i tried thirdtube and when it tries to load a video i get the error saying ffmpeg returned not success

    anyone got a solution?

  • [Bug] The bottom screen doesn't seem to update when a video is autoplayed

    [Bug] The bottom screen doesn't seem to update when a video is autoplayed

    I was watching Mr Beast Squid Game Review, a video from PewDiePie that has a 19:06 duration. However, after the video ended, it autoplayed Kids Decide Who Gets $1000 Is Very Cringe..., a different video that runs for 33:21. The video on the top screen and the scrubber all the way at the bottom both updated, but everything else still retained the information from the previous video. ThirdTube

    I thought that hitting the reload button would reload the information from the current video, but only the Suggestions and Playback tabs updated, with everything else remaining the same.

    I am not sure if the autoplay functionality is consequential or intentional, but it does appear to be bugged. If possible, I would like an option to toggle autoplay on or off.

  • Add GitHub Actions support for Daily Builds

    Add GitHub Actions support for Daily Builds

    So that general users like me can test the latest experimental builds of ThirdTube to see new features & report bugs without having to install 3DS development tools to build it and test it. (makes debugging more easy for these builds & make well bug-fixed builds)

  • Many new features and options

    Many new features and options

    I have many ideas, i will list them here:

    • Slider to change video contrast
    • Possibility to set custom button shortcuts for all the Nintendo buttons
    • Possibility to switch tabs (General, Comments, Playback) With L button to left tab and R button to right tab
    • Support to play video's reversed
    • Support to set custom amount of seconds backward and forward uses with these buttons.
    • Sharpen effect option
  • i got this error message when i tried to play video

    i got this error message when i tried to play video

    i tried to play a music or video i got this error message from thirdtube. i it affects my brother 3ds too and i reset the wifi router still problem still there can you update the decrypter. IMG_20221005_072342

  • 720p support by using the 800px mode (N3DS only feature)

    720p support by using the 800px mode (N3DS only feature)

    I do not know If that would be possible as I only see a 1mb/s download on the 3ds but It may work who knows.

    This Is the 800px mode I'm referring to --> https://db.universal-team.net/3ds/horihd-gallery

  • Sound Service Error At Starting The Application

    Sound Service Error At Starting The Application

    Error code: Could not initialize NDSP (sound service) Console Edition: Old nintendo 3DS Console Version: 11.15.0-47U Console Region: USA Luma3DS Version: v11.0

  • Higher O3DS Support

    Higher O3DS Support

    Although i am not on a O3DS (Which is now implemented), can't you make it higher than 144p? You may say it required more power, but maybe you could make a seperate release and branch for Old and New 3DS, from where the O3DS version uses a different like library to load and en/decode videos.

  • (Feature Request) Logging in with google

    (Feature Request) Logging in with google

    I am not sure how feasible this is but logging in to youtube would be a nice feature, to have the ability to access age restrcted content, comment, that kinda stuff.

  • Crashes after watching for too long

    Crashes after watching for too long

    Like the title sais, after like 30 minutes on 360p and max 1h on 240p it just dies out of nowhere. Sometimes it foreshadows a crash with endless loading screens, but most of the time i doesn't. I update everything so it isn't that, and i had this issue ever since I got it at 0.4.0 up until the most recent 0.5.1 consistently.

  • French translated strings

    French translated strings

    Hello, I translated thirdtube's strings in french. Would it be possible to include the french language on the next update? I wanted to create a fork but it's too annoying and will be way better to include it on the official one. The language code is FR and it include a new string <LANG_FR> for it. Here are the strings for the latest version (0.5.1), thanks in advance.

    string_resources_fr.txt

  • App immediately crashes post update 0.5.1 (New 3DS)

    App immediately crashes post update 0.5.1 (New 3DS)

    Basically what the title says. As soon as I booted after the update it crashed. Downgrading to 0.5.0 again worked fine though.

    Hardware: New 3DS XL Luma build: Luma3DS v11.0-6b633bc4 (https://github.com/Core-2-Extreme/Luma3DS/releases/) System Firmware: 11.16.0-49U Installed via .cia

    Github won't accept the .dmp dump file but I have it as well if you need it.

  • (I know i made an issue where you said it won't work, but look...) Support for 60FPS by pre-caching the video (buffer)

    (I know i made an issue where you said it won't work, but look...) Support for 60FPS by pre-caching the video (buffer)

    Isn't there really a way by using some sort of caching to play videos in 60FPS on New 3DS? The hardware is better, and i think that games on the New 3DS also run at 60FPS. If they don't, isn't it possible to use an FPS like 40 or 45?

Related tags
A homebrew software suite for video game consoles developed to help in the evaluation of upscalers, upscan converters

A homebrew software suite for video game consoles developed to help in the evaluation of upscalers, upscan converters, line doublers and of course TV processing of 240p video. The Wii and Dreamcast versions have modes for 480i and 480p evaluation as well.

Dec 1, 2022
Sample Project that I'm trying to build on YouTube (Live)

GTK-Project Sample Project that I'm trying to build on YouTube (Live) Streams discussing this: S.No. Date Title Limk 1 30/08/2021 Code Along: Building

Mar 18, 2022
Windows graphical interface for yt-dlp, designed as a simple YouTube downloader
Windows graphical interface for yt-dlp, designed as a simple YouTube downloader

ytdlp-interface This is a Windows graphical interface for yt-dlp, that is designed as a simple YouTube downloader. It doesn't download playlists, and

Nov 29, 2022
Even newer Custom Firmware for Xiaomi Cameras based on Hi3518ev200 Chipset. It includes free RTSP, ONVIF and other improvements based on the work by roleoroleo
Even newer Custom Firmware for Xiaomi Cameras based on Hi3518ev200 Chipset. It includes free RTSP, ONVIF and other improvements based on the work by roleoroleo

Why this Yi-Hack-V5 firmware? The answer is simple: missing updates, RTSP and not based on the latest stock firmware (which features improvements and

Dec 2, 2022
Jellyfin Desktop Client based on Plex Media Player
Jellyfin Desktop Client based on Plex Media Player

Desktop client using jellyfin-web with embedded MPV player. Supports Windows, Mac OS, and Linux. Media plays within the same window using the jellyfin-web interface unlike Jellyfin Desktop. Supports audio passthrough. Based on Plex Media Player.

Nov 30, 2022
My version of psxfunkin with new changes like new story mode, new options,etc
My version of psxfunkin with new changes like new story mode, new options,etc

PSXFunkin Friday Night Funkin' on the PSX LOL Compilation Refer to COMPILE.md here Characters Igor Ver added new characters Like XmasGF,Monster and mu

Jun 8, 2022
Netstick client for Nintendo 3DS -- turn your portable console into a Linux compatible WiFi gamepad!

Netstick turns your 3DS into a wifi enabled gamepad! Control any linux-based device (such as a Raspberry Pi running Retropie) using your 3DS!

Oct 6, 2022
work in progress 3d renderer based on sdl2
work in progress 3d renderer based on sdl2

work in progress 3d software renderer based on SDL. (Only supports wireframe view for now) Building On Linux, install libsdl2 and then run the folowin

Sep 12, 2021
work-in-progress port of Cave Story to the PlayStation, based on CSE2
work-in-progress port of Cave Story to the PlayStation, based on CSE2

DoukutsuPSX This is a port of Cave Story for the Sony PlayStation. It is based on CSE2, which is a decompilation of the original freeware Cave Story e

Nov 14, 2022
work in progress 3d renderer based on sdl2
work in progress 3d renderer based on sdl2

work in progress 3d software renderer based on SDL. (Only supports wireframe view for now) Building On Linux, install libsdl2 and then run the folowin

Sep 12, 2021
a work in progress try to make an IDE with the CSFML

EatSleepCode A work in progress for educational purpose. To help better understanding the CSFML lib. Installation clone this repo and do make Use case

Nov 20, 2022
A work-in-progress C++20/23 header-only maths library for game development, embedded, kernel and general-purpose that works in constant context.
A work-in-progress C++20/23 header-only maths library for game development, embedded, kernel and general-purpose that works in constant context.

kMath /kmæθ/ A work-in-progress general-purpose C++20/23 header-only maths library that works in constant context Abstract The kMath Project aims to p

Sep 5, 2022
X11 file manager (work in progress)

xfiles This is a still incomplete file manager for X11. It can only navigate through directories, select files (and do nothing with them), call a sc

Apr 9, 2022
SysWhispers Shellcode Loader (Work in Progress)
SysWhispers Shellcode Loader (Work in Progress)

Shhhloader Shhhloader is a SysWhispers Shellcode Loader that is currently a Work in Progress. It takes raw shellcode as input and compiles a C++ stub

Nov 24, 2022
Emergency alert and tracer for realtime high-performance computing app (work in progress, currently supported env is only Linux x86-64).

HPC Emerg Emergency alert and tracer for realtime high-performance computing app (work in progress, currently supported env is only Linux x86-64). Exa

Jan 19, 2022
Colang - Programming language and compiler —WORK IN PROGRESS—

Co programming language Building Initial setup: ./init.sh will install the following into deps/: ckit build tool and rbase library ckit-jemalloc memor

Sep 15, 2022
Webdav-client-cpp - C++ WebDAV Client provides easy and convenient to work with WebDAV-servers.

WebDAV Client Package WebDAV Client provides easy and convenient to work with WebDAV-servers: Yandex.Disk Dropbox Google Drive Box 4shared ownCloud ..

Oct 1, 2022
A modern-day Boss Key software tool. Switch instantly from work to play & play to work with Bosky.

Bosky By: Seanpm2001, Bosky-dev Et; Al. Top README.md Read this article in a different language Sorted by: A-Z Sorting options unavailable ( af Afrika

Sep 10, 2022
Video player for 3ds
Video player for 3ds

Video player for 3DS Patch note v1.0.1 Added allow skip frames option v1.0.0 Initial release Summary Video player for 3DS Performance 256x144(144p)@30

Nov 21, 2022
Mario Kart 7 semi-primary exploit for the Nintendo 3DS.
Mario Kart 7 semi-primary exploit for the Nintendo 3DS.

kartdlphax kartdlphax is a semiprimary exploit for the download play mode of Mario Kart 7. It can be used to run an userland payload in an unmodified

Dec 2, 2022