Skip to content

Release v0.2

Choose a tag to compare

@Basket5125 Basket5125 released this 17 Oct 18:47
· 6 commits to main since this release

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 support start-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 as video_uploaded events. 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, next link). 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 302 with no-cache headers instead of 301, so a format change in the app applies to the next video.
  • yt2009-style links such as /get_480?video_id=ID/lower are 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