"""Per-tube stream URL extractors. Każdy moduł `.py` eksportuje funkcję `extract(page_url) -> list[StreamSource] | None`. Registry w `app.extractors.__init__` mapuje sitetag → extract(). """