Commit Graph

89 Commits

Author SHA1 Message Date
d6cb0fe692 feat: support for md5 videoplayback url shortening
md5(url) can be supplied as md5 param to shorten videoplayback url
2025-10-12 18:52:38 +02:00
81fba8c4d0 fix: handle forwarded requests
proxied requests are now counted correctly
2025-10-05 23:42:23 +02:00
260039c307 hotfix: make the chunk size an integer in videoplayback proxy 2025-10-05 20:03:43 +02:00
2b24fc2906 feat: videoplayback proxying
adds support for proxying videos through the instance
the support is configurable, and disabled by default
2025-10-05 19:59:23 +02:00
002e3cba33 hotfix: glaring mistake while parsing text runs 2025-10-05 18:15:56 +02:00
5944fd2458 feat: support for "trending" playlists (without authors)
also introduces a fix for text run parsing (by forcing obj to be a dict)
2025-10-05 17:22:15 +02:00
719b545cb4 fix: livestream data extraction
prevents "NoneType" is not iterable error
2025-10-05 11:12:44 +02:00
468795a7a2 feat: search pagination
adds support for getting past the first page of search results
2025-10-03 01:16:56 +02:00
7eb4452fec feat: make maxres provide the best quality thumbnail available 2025-10-02 12:42:12 +02:00
e7ae42f289 fix: simulate pagination for clients that rely on it
some clients (like clipious) use pagination on playlists and rely on
videos field to tell if the playlist has no more videos.
here all videos are returned for non-paginated queries, with empty video
field returned for every paginated query, which page is not equal to "1"
2025-10-02 02:27:51 +02:00
5bb542826e feat: rewrite channel api endpoints in reversed order 2025-10-02 01:23:37 +02:00
365c54d214 fix: actually fall back to the android_vr extractor 2025-10-01 09:10:15 +02:00
a2e2fedc90 fix: handle empty channel tabs gracefully
prevents 500s when a channel tab is empty
2025-09-28 10:12:23 +02:00
4a311f185c fix: prefer android_vr extractor by default
this is possibly one of the last known extractors unaffected by
signature extraction and decryption shenanigans, which cripples load
times on lower-end hardware
2025-09-28 07:47:17 +02:00
45073fff67 feat: extract avatar of the channel which added a video to a
collaborative playlist
surprisingly, innertube response contains the user's avatar, but doesn't
contain the ucid, name nor the handle
2025-09-28 06:59:53 +02:00
f73e6c11d4 fix: playlist description and collaborative playlist rendering
falls back to the more "universal" microformat for description
extraction and provides limited support for collaborative videos
(no channel ucids or collaborator names)
2025-09-28 06:32:39 +02:00
34e00e2492 fix: handle collaboratively authored videos in playlists and videos
endpoint
currently, the videos endpoint returns the video uploader name,
and not "author1, author2, author3" as is the case for videoRenderer
and playlistVideoRenderer - this might change in the future in order for
the endpoints to return the same data
2025-09-28 05:02:51 +02:00
f63c620541 fix: avatars for artist channels
ensures that we get the renderers, rather than expecting them to always
be the first or second element of primary_results (which is not the case
if the video has for example the "Nearest event" ticketShelfRenderer)
2025-09-27 23:52:50 +02:00
f2adc2e561 fix: verified badge extraction for search results
also introduces support for collaborative videos (mainly music videos)
2025-09-27 21:41:51 +02:00
e6d32091e1 fix: don't check for plid length
playlist ids can be of many lengths (at least 18, 34 and 36) and there
doesn't seem to be a rule for how many characters encode a typical
(non-mix, video-related) playlist. such validation requires more
research.
2025-09-27 20:41:07 +02:00
b98aa718b0 fix: fix shorts-only playlists by using on-demand ctoken generator
this will allow for retrieving playlist videos as playlistVideoRenderer
which we already have a parser for. another benefit is being able to
list videos in a playlist which have been deleted/made private.
also fixes livestream parsing
2025-09-26 22:49:16 +02:00
30850a7ce0 feat: protobuf ctoken generation
this commit introduces on-demand ctoken generation with a wrapper
for more concise, protodec-like syntax (see producePlaylistContinuation)
2025-09-26 22:40:29 +02:00
1c9174c888 feat: playlist browsing
pagination still needs refinement for some of the clients.
on another note, this is an anniversary commit, as ythdd turns 1 year
today.
2025-09-25 23:30:59 +02:00
6d0c70696b docs: reorganize and update TODOs 2025-09-25 06:50:10 +02:00
509e81aafa feat: add a temporary proxy for no_thumbnail
ideally, this would be served from a local resource instead of proxying
2025-09-25 06:36:23 +02:00
caa9e0c2b1 feat: list traversal improvements with safeTraverse()
translateLinks() also now strips any params (if present) by default
2025-09-25 06:34:13 +02:00
873abbd413 chore: update version strings 2025-09-25 06:30:53 +02:00
bedcaff7c0 fix: skip playlists in related video feed
they aren't returned by the invidious api in the first place
2025-09-23 20:10:19 +02:00
5dcf8c81e0 fix: strip playlist thumbnails off of unnecessary tracking params 2025-09-23 04:20:15 +02:00
60712f3b5d fix: provide "latest" endpoint for channels 2025-09-23 04:19:42 +02:00
c20d4c34aa feat: check for playback errors and return them in invidious api fashion 2025-09-22 10:50:33 +02:00
be697bb572 chore: update version strings 2025-09-21 21:16:05 +02:00
3e84cf3443 fix: check video id for validity before passing to yt-dlp and extractor 2025-09-19 04:55:34 +02:00
4a3937a923 feat: livestream browsing
adds the ability to browse channel's livestreams, just like with
shorts, videos and playlists
2025-09-18 08:09:33 +02:00
c3fae689e1 feat: show current viewer count for live streams in search results
and related videos feed
previously it would fall back to 0
2025-09-17 01:55:35 +02:00
4cfb1db7d0 fix: handle url rewrite when querying wrong endpoint
materialious is guilty of this
2025-09-17 01:52:45 +02:00
5a1e772909 feat: add support for video livestreams 2025-09-17 00:13:20 +02:00
7c4991cea7 fix: fix for infinite recursion/deadlock for specific channels
this applies mainly for meta channels like UC4R8DWoMoI7CAwX8_LjQHig,
which ythdd can't parse and thus doesn't support
2025-09-16 23:36:53 +02:00
5f88d6f096 docs: update todos and error message when comment extraction fails 2025-09-16 23:35:07 +02:00
eaaa14c4d8 feat: treat verified artists as verified users 2025-09-16 23:28:46 +02:00
ef177f7200 feat: video comments endpoint 2025-09-14 07:02:22 +02:00
d0d2298186 fix: rely on hardcoded default user avatar for failed requests 2025-09-14 04:01:19 +02:00
7086177a58 fix: make safeTraverse handle IndexErrors 2025-09-14 01:06:40 +02:00
dc8009db23 chore: update innertube client strings 2025-09-13 04:05:25 +02:00
e562d1ee14 hotfix: rename a variable used for extraction of recommended feed
also minor nitpicky comment corrections
2025-09-12 04:05:56 +02:00
96c1b5396e feat: channel browsing and code overhaul
a lot of code responsible for parsing data into invidious-compatible
structures has been moved to the ythdd_struct_parser file
2025-09-12 03:48:57 +02:00
256d21bbcd fix: fixes to context creation, avatar url generation
also implemented basic badge extraction and continuation for channels
2025-09-12 00:15:06 +02:00
2a9826eb03 refactor: support search caching
remains to be seen whether this is a good idea or not
2025-09-07 05:30:16 +02:00
37e932956d feat: search suggestions 2025-09-07 05:05:11 +02:00
15d2de5228 chore: change the hostname in default config to match the one assumed
(if not explicitly passed to the script, e.g. when running with flask)
2025-09-05 18:51:09 +02:00