* fix(bunkr): catch new maintenance video file during validation
Bunkr has performing a large scale maintenance recently, and I've
noticed that I would on occasion download a file only to get
a short server is in maintenance video instead of the intended file.
Debug logs show the filename for the maintenance video has changed:
[urllib3.connectionpool][debug] Starting new HTTPS connection (1): 3d09xl1.b-cdn.net:443
[urllib3.connectionpool][debug] https://3d09xl1.b-cdn.net:443 "GET /c4f36040-bdd1-40b6-aea1-034dfbe88ba2/maint.mp4 HTTP/1.1" 200 322509
This commit fixes the detection of that file to properly send the
"File server in maintenance mode" warning instead of downloading an
unintended file.
Signed-off-by: Benjamin VERGNAUD <ben@bvergnaud.fr>
* check multiple suffixes with one 'endswith()' call
---------
Signed-off-by: Benjamin VERGNAUD <ben@bvergnaud.fr>
* [batoto] replace k-subdomain image URLs with n-subdomain
Update tests to use battwo.com proxy domain and current metadata
* [batoto] revert to list comprehension
#7246#8035#8466#8730
* [tiktok] support extracting videos directly without yt-dlp
* [tiktok] support extracting users directly without yt-dlp
* [tiktok] fixing logic, tests, linting errors
* [tiktok] implement tiktok-range support for non-yt-dlp user extractor
* [tiktok] Skip range filter if no ranges are given
* [tiktok] Remove debug code
* [tiktok] only check for faulty device IDs during the first couple of passes
I think the original yt-dlp solution assumes that if a device ID works once, it will always work.
Plus, my approach would cause needless retries in certain cases if hasMorePrevious does end up being wrong like the original algorithm accounts for. So let's copy the original algorithm here, too.
* [tiktok] support stories
* [tiktok] you can now extract audio without extracting photos
* [tiktok] add TiktokFollowingExtractor
* [tiktok] update supportedsites to include stories
* [tiktok] Keep tiktok-range option for no content user account test
It acts as a nice guard against that account suddenly having lots of posts to extract
* [tiktok] TiktokUserExtractor and TiktokFollowingExtractor rewrite
* [tiktok] Fix avatar naming convention to match that of posts
* [tiktok] remove type hints for compatibility with older Python versions
* [tiktok] Improve performance of TiktokFollowingExtractor
This was largely achieved using the story/batch/item_list endpoint
* [tiktok] Forgot to run flake8
* [tiktok] remove old constant
* [tiktok] Support order-posts config item
* [tiktok] flake8
* [tiktok] Older Python versions don't support match
* [tiktok] always ask for posts in chronological order when in "desc" mode
We should aim to avoid having pinned posts returned before non-pinned ones
* [tiktok] Add liked posts extraction
* [tiktok] Add reposts extraction
* [tiktok] Add saved posts extraction
* cleanup imports
* remove '# MARK:' comments
* remove & simplify 'except' statements
KeyboardInterrupt & SystemExit inherit from BaseException (not Exception)
and therefore don't need special handling
* split 'user' extractor
* move PATTERNs into their respective functions
* use dict comprehensions
* add only-matching test URLs for split user extractors
* update config docs
rename 'tiktok-user-extractor' to 'ytdl'
* document '"popular"' 'order-posts' value
* inline and remove 'util.chunk()'