Commit Graph

102 Commits

Author SHA1 Message Date
22c72aa842 remove yt-dlp, fix captions PO Token issue, fix 429 retry logic
All checks were successful
git-sync-with-mirror / git-sync (push) Successful in 13s
CI / test (push) Successful in 52s
- Remove yt-dlp entirely (modules, routes, settings, dependency)
  Was blocking page loads by running synchronously in gevent
- Fix captions: use Android client caption URLs (no PO Token needed)
  instead of web timedtext URLs that YouTube now blocks
- Fix 429 retry: fail immediately without Tor (same IP = pointless retry)
  Was causing ~27s delays with exponential backoff
- Accept ytdlp_enabled as legacy setting to avoid warning on startup
2026-03-27 20:47:44 -05:00
6a68f06645 Release v0.4.0 - HD Thumbnails, YouTube 2024+ Support, and yt-dlp Integration
Some checks failed
CI / test (push) Failing after 1m19s
Major Features:
- HD video thumbnails (hq720.jpg) with automatic fallback to lower qualities
- HD channel avatars (240x240 instead of 88x88)
- YouTube 2024+ lockupViewModel support for channel playlists
- youtubei/v1/browse API integration for channel playlist tabs
- yt-dlp integration for multi-language audio and subtitles

Bug Fixes:
- Fixed undefined `abort` import in playlist.py
- Fixed undefined functions in proto.py (encode_varint, bytes_to_hex, succinct_encode)
- Fixed missing `traceback` import in proto_debug.py
- Fixed blurry playlist thumbnails using default.jpg instead of HD versions
- Fixed channel playlists page using deprecated pbj=1 format

Improvements:
- Automatic thumbnail fallback system (hq720 → sddefault → hqdefault → mqdefault → default)
- JavaScript thumbnail_fallback() handler for 404 errors
- Better thumbnail quality across all pages (watch, channel, playlist, subscriptions)
- Consistent HD avatar display for all channel items
- Settings system automatically adds new settings without breaking user config

Files Modified:
- youtube/watch.py - HD thumbnails for related videos and playlist items
- youtube/channel.py - HD thumbnails for channel playlists, youtubei API integration
- youtube/playlist.py - HD thumbnails, fixed abort import
- youtube/util.py - HD thumbnail URLs, avatar HD upgrade, prefix_url improvements
- youtube/comments.py - HD video thumbnail
- youtube/subscriptions.py - HD thumbnails, fixed abort import
- youtube/yt_data_extract/common.py - lockupViewModel support, extract_lockup_view_model_info()
- youtube/yt_data_extract/everything_else.py - HD playlist thumbnails
- youtube/proto.py - Fixed undefined function references
- youtube/proto_debug.py - Added traceback import
- youtube/static/js/common.js - thumbnail_fallback() handler
- youtube/templates/*.html - Added onerror handlers for thumbnail fallback
- youtube/version.py - Bump to v0.4.0

Technical Details:
- All thumbnail URLs now use hq720.jpg (1280x720) when available
- Fallback handled client-side via JavaScript onerror handler
- Server-side avatar upgrade via regex in util.prefix_url()
- lockupViewModel parser extracts contentType, metadata, and first_video_id
- Channel playlist tabs now use youtubei/v1/browse instead of deprecated pbj=1
- Settings version system ensures backward compatibility
2026-03-22 20:50:03 -05:00
3ee2df7faa Refactor styles on video playback page
Made changes to the styles on the video playback page to enhance visibility and address issues with the video player.
Added a new custom style file for Plyr, and removed redundant and unused styles in watch.css.

Specific changes:
- Added custom_plyr.css for Plyr styles.
- Removed redundant styles related to playback issues in watch.css
2024-01-29 05:06:38 +08:00
59c988f819 Revert update plyr 2024-01-28 00:31:30 +08:00
4da91fb972 update plyr 2024-01-22 12:10:13 +08:00
b215e2a3b2 Add setting to autoplay videos 2024-01-22 06:38:52 +08:00
51a1693789 Fix comment count extraction due to 'K/M' postfixes
YouTube now displays 2K comments instead of 2359, for instance
2024-01-22 05:59:11 +08:00
Jesus E
aa57ace742 Fix music list extraction
Closes #160
2023-05-28 21:42:13 -04:00
Jesús
85860087b6 Fix missing id into input tag 2022-10-05 10:30:17 +08:00
Jesús
a19da4050c Fix self closing tag w3c issues 2022-10-05 10:29:23 +08:00
Jesús
c524eb16e5 Disable download by RIAA issues
Ref: https://torrentfreak.com/riaa-thwarts-youts-attempt-to-declare-youtube-ripping-legal-221002/
Archive: https://archive.ph/OZQbN
2022-10-05 10:14:06 +08:00
Jesús
a1dd283832 Revert update plyr
because iceweasel not support engine v8+
More info: https://repo.palemoon.org/MoonchildProductions/UXP/issues/1675
2022-05-30 23:43:32 +08:00
Jesús
e8cbc5074a [embed]: Fix undefined storyboard_url and add license 2022-02-21 15:52:27 -05:00
Jesús
cd876f65e3 Update plyr module 2022-02-11 12:01:22 -05:00
zrose584
63c92e0c4e add preview thumbnails
Signed-off-by: Jesús <heckyel@hyperbola.info>
2022-01-09 16:39:50 -05:00
Jesús
92067638b1 Disable dislikes
Ref: https://blog.youtube/news-and-events/update-to-youtube/
2021-12-26 13:29:55 -05:00
Jesús
8b745907cc improve quality-select 2021-09-14 14:49:14 -05:00
James Taylor
9c7e93ecf8 Redo av codec settings & selections to accomodate webm
Allows for ranked preferences for h264, av1, and vp9 codecs in
settings, along with equal preferences which are tiebroken using
smaller file size.

For each quality, gives av-merge a list of video sources
and audio sources sorted based on preference & file size. It
will pick the first one that the browser supports.

Closes #84

Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-09-06 16:18:11 -05:00
Jesús
1632ab5cda plyr: remove sourceMappingURL=plyr.min.js.map 2021-08-31 21:00:43 -05:00
Jesús
309ff40943 watch.html: Move loose inline javascript into watch.js
The number of inline code blocks and the dependencies between them
became unmanageable.

From 9d96c07a3c2e68f1893634574c3be64e41a2c041 Mon Sep 17 00:00:00 2001
From: James Taylor <user234683@users.noreply.github.com>
2021-08-29 22:43:10 -05:00
James Taylor
6e39ae19b6 Prevent Firefox from remembering quality select on page refresh
The video quality is only changed when the quality selector
changes. If it was changed and the user refreshes, Firefox
remembers the selected value, but since no change event is fired,
the select will display the wrong quality.

Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 21:51:41 -05:00
James Taylor
9f44e0474b Integrate quality selection into Plyr
Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 21:47:14 -05:00
James Taylor
fa3b78583f avmerge: Close streams to avoid errors while changing quality
If a fetchRange network request finished after the quality was
changed, there would be a "InvalidStateError: An attempt was made
to use an object that is not, or is no longer, usable" because
appendSegment was trying to append to the sourceBuffer that was
unusable after the video src was changed to a new mediaSource.

Adds a close method to the AVMerge class to properly clean and
close everything so these sorts of errors won't happen.

Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 21:00:30 -05:00
James Taylor
a7da23c6da Add video quality selector
Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 20:52:57 -05:00
James Taylor
c9a75042d2 Add support for more qualities, merging video+audio using MSE
Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 18:48:56 -05:00
Jesús
e4af99fd17 Revert "Add support for more qualities, merging video+audio using MSE"
This reverts commit d56df02e7b.
2021-08-29 18:48:01 -05:00
James Taylor
d56df02e7b Add support for more qualities, merging video+audio using MSE
Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 18:44:26 -05:00
Jesús
af1df31161 [plyr]: update 2021-08-09 22:09:04 -05:00
Jesús
33d732f781 fix right click for video 2021-07-05 15:44:07 -05:00
Jesús
de5510d3e3 Improved plyr configuration 2021-07-03 23:38:50 -05:00
Jesús
c6fe980a7a autoplay-toggle: use label tag
from upstream:

<label> is semantic and makes clicking the text activate in checkbox
2021-06-29 19:07:40 -05:00
Jesús
5906633641 fix settings.subtitles_mode in plyr 2021-06-23 15:48:19 -05:00
Jesús
2c56a24711 fix name id of video 2021-06-23 15:35:01 -05:00
Jesús
61b4518335 Fix set language subtitles 2021-06-23 15:19:31 -05:00
Jesús
7f79269cf3 usage let not var 2021-06-23 14:43:10 -05:00
Umimaso
2d1794889a feat: autoplay for related videos
Add autoplay support for related videos. Move the playlist autoplay code
into this shared script. Add the SameSite=Strict attribute to the
autoplay cookie due to Firefox soon rejecting cookies which use
SameSite=None without the secure attribute.

Closes: #50

Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-06-23 14:34:55 -05:00
Jesús
ff7aae05c4 Open direct link in new tab 2021-06-23 12:43:55 -05:00
Umimaso
5b4c99c702 feat: add direct link
Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-06-23 12:42:17 -05:00
Jesús
1b860c6917 Not force plyr as player 2021-05-24 21:17:59 -05:00
Jesús
b3abec81e1 Add plyr as main player
Also plyr supports switch quality
2021-05-22 17:05:39 -05:00
James Taylor
d88a69d811 Add tooltip to video speed box to improve discoverability
See #60

Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-04-13 21:08:08 -05:00
Jesús
1f4d7cc958 General theme: fix syntax W3C markup and add improve 'Published' date
Signed-off-by: Jesús <heckyel@hyperbola.info>
2020-12-30 16:52:26 -05:00
Jesús
0a9d24b261 General theme: Add license to missing script in watch.html 2020-12-29 21:33:56 -05:00
Jesús
0f78e73e80 General theme: add license and add URL source code in footer 2020-12-29 15:36:23 -05:00
Jesús
97f00efa8a Migration general theme: fix video player method in javascript 2020-12-15 22:34:45 -05:00
Jesús
e9215534d3 Migration general theme: fix missing message-box style 2020-12-15 11:24:13 -05:00
Jesús
7a765dc664 Change general design theme 2020-12-14 23:44:29 -05:00
James Taylor
1a7ed0a981 Add box to enter custom video speed 2020-11-30 17:10:11 -08:00
James Taylor
aa52c7a42e Merge branch 'master' into add_sponsorblock 2020-10-21 18:53:12 -07:00
James Taylor
f100685d64 Move comment.js reply button styling to comments.css
So that the style will also be present on the /comments pages
2020-10-20 17:19:45 -07:00