Introduction
I am the creator/developer of NexTube, and I decided I wanted to check out ThirdTube again.
However, I discovered it broke back in July so over the course of Sunday and Today I and
some members (check credits!) in the ThirdTube discord server have been working on a fix! And we did it
a few hours ago! Just the app likes to crash as it is based on ThirdTube (it is in our Todo list).
Before You Mention An Issue
Yes we know videos crash (please don't mention it unless you have a fix). This also may not even be a FourthTube issue and just a ThirdTube it is in progress.
Captions don't work
How The Fix Works
So how ThirdTube works is it uses a decrypter and some base.js tomfoolery to access /player (without 403ing).
The issue with this approach is, well, it breaks a lot. It was fine when the dev was active, but the dev has not.
However
We don't need that, we just need to send IOS YouTube app data, and it makes it happy (this is one of the methods YT-DLP uses)
Issue
This causes the metadata to breaks, thankfully we just have a separate post_content and video_content strings and use both for
Todo
Rename
Dislikes using (https://returnyoutubedislike.com/docs/endpoints) (DONE!)
Stability Fixes (MOSTLY DONE MUCH MORE STABLE!
Caption Fixes (DONE!)
And probably more!
Images
Links and Download!
https://github.com/erievs/FourthTube (GitHub)
Install Now!
I am the creator/developer of NexTube, and I decided I wanted to check out ThirdTube again.
However, I discovered it broke back in July so over the course of Sunday and Today I and
some members (check credits!) in the ThirdTube discord server have been working on a fix! And we did it
a few hours ago! Just the app likes to crash as it is based on ThirdTube (it is in our Todo list).
Before You Mention An Issue
Yes we know videos crash (please don't mention it unless you have a fix). This also may not even be a FourthTube issue and just a ThirdTube it is in progress.
Captions don't work
How The Fix Works
So how ThirdTube works is it uses a decrypter and some base.js tomfoolery to access /player (without 403ing).
The issue with this approach is, well, it breaks a lot. It was fine when the dev was active, but the dev has not.
However
We don't need that, we just need to send IOS YouTube app data, and it makes it happy (this is one of the methods YT-DLP uses)
std::string video_content = R"({"videoId": "%0", %1"context": {"client": {"hl": "%2","gl": "%3","clientName": "IOS","clientVersion": "19.29.1","deviceMake": "Apple","deviceModel": "19.29.1","osName": "iPhone","userAgent": "com.google.ios.youtube/19.29.1 (iPhone16,2; U; CPU iOS 17_5_1 like Mac OS X;)\"","osVersion": "17.5.1.21F90"}}, "playbackContext": {"contentPlaybackContext": {"signatureTimestamp": %4}}})";
Issue
This causes the metadata to breaks, thankfully we just have a separate post_content and video_content strings and use both for
std::string json_str[2]; // {/next, /player}
json_str[0] = http_post_json(urls[0], post_content).second;
json_str[1] = http_post_json(urls[1], video_content).second; /
Todo
Rename
And probably more!
Images
Links and Download!
https://github.com/erievs/FourthTube (GitHub)
Install Now!
Last edited by NCP30,