Repository navigation
Release v0.2
Playlists
- Added the
/feeds/api/users/{channel}/playlists/{id}route used by yt2009-style clients. It used to return 404. - Fixed the channel playlist list. YouTube no longer accepts the old tab parameter and now uses a new layout (
lockupViewModel), so the list came back empty. - Fixed playlist videos, including YouTube's new short playlist IDs.
- Long playlists load past the first 100 videos again.
- Playlist feeds start with a yt2009-style header (title, author, video count, thumbnail). Entries include
yt:position, and feeds supportstart-index/max-results.
Channels
- Uploads now include Shorts and past live streams, in upload order. They are read from the channel's
UU…uploads playlist. - Activity tab: added
/feeds/api/events?author=(as in yt2009), which shows the 7 latest uploads asvideo_uploadedevents. It shows the channel name instead of the channel ID. - Usernames and @Handles are resolved to channel IDs.
- Added
/feeds/api/channels/{id}as an alias for the channel profile.
Search
- Pagination (
start-index,max-results,nextlink). The next page is loaded in the background, so scrolling to it is instant. - Channel search shows correct subscriber counts (YouTube swapped the fields in its results). Results also include avatars and links to uploads and playlists.
Most popular
- Loaded from Innertube instead of a bundled static file. YouTube removed its Trending page.
- General feed: the most viewed videos uploaded this week, with a music video from the region's "Trending 20" chart as every fifth entry.
- Music category: the region's "Top 100 Music Videos" chart.
- Other categories: the most viewed videos of the month for that category.
- Shorts and live streams are left out.
- Legacy feed names (
top_rated,most_viewed,recently_featured, …) and paths without a region now return the same feed. - When YouTube cannot be reached, the proxy serves the last cached feed, or an empty one.
Feed data
- Dates use the format legacy clients expect, as in yt2009:
…T15:00:00.000Z. This also fixes comment dates. - View counts now show for related videos (YouTube uses short counts like "207M" there).
- Video categories and publish dates are filled in.
Playback
- Redirects use
302with no-cache headers instead of301, so a format change in the app applies to the next video. - yt2009-style links such as
/get_480?video_id=ID/lowerare accepted. - When the selected format is unavailable, the proxy falls back to 360p.
- Experimental 720p with audio: the video and audio streams are muxed on the phone, without transcoding, into a regular seekable MP4. If muxing fails, playback falls back to 360p. Diagnostics:
adb logcat -s Mp4Mux.
Performance
-
HTTPS connections are reused instead of opening a new TLS handshake per request, and responses are gzip-compressed.
-
The crash-report logger no longer slows down every request.
-
Descriptions, like counts and dates load in parallel within a 2-second budget. Anything slower finishes in the background and is cached for 24 hours, so the next request has complete data immediately.
-
Finished feeds are cached:
Feed Cache time Search 30 min Uploads and activity 10 min Playlists 15 min Channel profiles 1 h Feeds that were still missing data are not cached as fresh.
-
Later pages of playlists and search continue from where the previous request stopped, instead of reloading the earlier pages.
Known issues
- 1080p (video only) does not work.
- Audio only does not work.
- 720p with audio is unreliable.
- Without a PO token, YouTube usually serves these adaptive streams only for about the first minute and answers HTTP 403 after that.
- Before muxing, the proxy checks that the end of both streams is reachable and falls back to 360p when it is not. As a result, most videos end up playing in 360p.
- On Samsung's Android 4.4 player, buffering can be slow or stall.
Also I'm a genius cause I lost my freaking release key 2nd time so you need to uninstall old version before installing new