| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
Videos without hq720.jpg thumbnails caused mass 404 errors.
Now preserves the actual thumbnail URL from YouTube's API response,
falls back to hqdefault.jpg only when no thumbnail is provided.
Also picks highest quality thumbnail from API (thumbnails[-1])
and adds progressive fallback for subscription/download functions.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
response.getheaders() will be deprecated by urllib3.
|
| |
|
|
|
|
|
|
| |
ggpht.com
Avatars no longer loaded after YouTube changed the subdomain.
Fixes #163
|
| |
|
|
| |
Signed-off-by: Jesús <heckyel@hyperbola.info>
|
| |
|
|
| |
Signed-off-by: Jesús <heckyel@hyperbola.info>
|
| |
|
|
| |
This reverts commit d56df02e7b1eba86baf511289208295b1f6c5a50.
|
| |
|
|
| |
Signed-off-by: Jesús <heckyel@hyperbola.info>
|
| | |
|
| |
|
|
|
|
| |
See #55
Signed-off-by: Jesús <heckyel@hyperbola.info>
|
| | |
|
| |
|
|
|
| |
e.g:
ValueError: Invalid or unsupported url: https:/www.youtube.com/watch
|
| |
|
|
|
|
|
| |
Issue #36
From e51f0a78c778a2283887db7ffc22421a7c849296 Mon Sep 17 00:00:00 2001
From: James Taylor <user234683@users.noreply.github.com>
|
| |
|
|
|
|
|
|
|
|
| |
googlevideo sometimes doesn't send all video content and closes
the connection. Retry with a range request for the bytes needed
a maximum of three times.
Fixes first type of #40
Signed-off-by: Jesús <heckyel@hyperbola.info>
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
- Actually using it will result in comments being shadowbanned,
even those posted from Youtube's interfacs, because your account
gets downranked since no analytics are present so it looks like a
bot posting the comment.
- It's been broken for awhile
|
| | |
|
| |
|
|
|
| |
Using invidious isn't always successful, whereas Tor video routing
appears to be near 100% successful.
|
| |
|
|
|
|
| |
Add if __name__ == '__main__' check and add the name
"application" pointing to the callable.
Fixes #19
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
Includes non-tor video routing by default, so no more chances
of the browser leaking headers or user agent to googlevideo
Adjust settings upgrade system to facilitate change to route_tor
setting.
Add some more space on settings page for dropdown settings so does
not overflow due to options with long names.
Closes #7
|
| |\ |
|
| | | |
|
| |/ |
|
| | |
|
| |
|
|
| |
The parameters weren't passed to the underlying function
|
| |
|
|
|
|
|
|
| |
parses it correctly.
Otherwise, parameters starting with ? will be included in the video
id, which messes up the comments since the extraneous data is
passed into the the ctoken.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|