- m3u8_downloader: replace the ineffective -allowed_extensions ALL with
-extension_picky 0 so the ffmpeg fallback accepts CDNs that serve HLS
segments with a non-media extension (e.g. watching.onl's .jpg segments),
which previously failed every variant with "Output file does not contain
any stream".
- anivexa: swap the allmanga provider for mkissa (PROVIDER_PRIORITY,
nicknames, docstring, watch.js provider list, stream test, README) to
match the sidecar's v2.2.1 update.
🤖 Generated with Codebuff
Co-Authored-By: Codebuff <noreply@codebuff.com>
Wire up episode downloads with live progress, quality picker, and cancel
Implements the previously documented but never-wired M3U8 download flow:
server-side stitching to a single MP4 via yt-dlp/ffmpeg with a background
worker, token-based status polling, and file serving with cleanup. The watch
page download button now supports direct provider links, a quality picker fed
by probing the HLS master playlist, a live progress percentage during
stitching, a completion summary card, and mid-download cancellation that
kills the subprocess.
🤖 Generated with Codebuff
Co-Authored-By: Codebuff <noreply@codebuff.com>
Add AniList anime-info fallback and provider nicknames
Anime details pages now get their info from AniList GraphQL (characters,
voice actors, relations, recommendations, trailer) with Jikan as fallback,
so they keep working when Jikan/MAL is down. Watch-page server pills get
fun nicknames (Zenith, Kaiju, Tenka, Maki, ...) rendered server-side and
in the client display-name map.
🤖 Generated with Codebuff
Co-Authored-By: Codebuff <noreply@codebuff.com>