AL
June 4, 2026 ยท View on GitHub
Per-source notes for the AL integration. For conventions that apply to every source document, see docs/sources/README.md; for the rules that govern third-party payload work, see the Third-Party Source Work section of AGENTS.md.
Search
- Module:
quasarr/search/sources/al.py - Categories: Movies, Shows, Anime Shows
- Style: HTML scrape via BeautifulSoup
- Capabilities:
supports_imdb=True,supports_phrase=False,supports_absolute_numbering=True,requires_login=True - Session:
quasarr.providers.sessions.al(fetch_via_requests_session,invalidate_session)
Download
- Module:
quasarr/downloads/sources/al.py - Inherits:
AbstractDownloadSource - Link protection: handled in
quasarr/downloads/linkcrypters/al.py(CAPTCHA solving and content decryption); FlareSolverr is required for the download flow. - CAPTCHA flow: the details page and the initial
/ajax/captcha(nocaptcha) request run on the FlareSolverr browser session to arm the challenge. The CAPTCHA solve (icon fetch + selection submit on/files/captcha) and the final/ajax/captcha(captcha) validation must run on the samerequests.Session, because AL binds a solved CAPTCHA to the client that solved it โ validating from the FlareSolverr browser instead is rejected withThe captcha ID was invalid. CAPTCHA POST requests include browser-style AJAX headers, and the requests session keeps the current FlareSolverr User-Agent so it stays browser-consistent.
Notable quirks
- Absolute episode numbering is resolved through
quasarr.providers.xem_metadata.get_season_name. - Anime release titles are constructed via
quasarr.downloads.sources.helpers.anime_title.guess_release_title. - Search treats a single-hit redirect as an implicit result; redirects are followed before parsing.
- Per-release HTML is cached for a short window via
get_recently_searchedto avoid re-fetching detail pages. - Multi-episode packs are split per requested episode, with size divided proportionally.