-
Notifications
You must be signed in to change notification settings - Fork 0
Datenmodelle DE
🌐 English · Deutsch
Jede Streaming-Quelle ist als Provider-Dataclass registriert: URL-Patterns (Serie/Staffel/Episode) plus die zugehörigen Modellklassen.
| Quelle | series_cls | season_cls | episode_cls |
|---|---|---|---|
| AniWorld | AniworldSeries |
AniworldSeason |
AniworldEpisode |
| SerienStream (serienstream.to) | SerienstreamSeries |
SerienstreamSeason |
SerienstreamEpisode |
| FilmPalast | — | — |
FilmPalastEpisode (Filme haben keine Staffel-Struktur) |
| MegaKino (Serie) | MegakinoSeries |
MegakinoSeason |
MegakinoEpisode (ein Post = eine Staffel; synthetische …?episode=N-URLs) |
| MegaKino (Film) | — | — | MegakinoMovie |
| hanime (18+) | HanimeSeries |
HanimeSeason |
HanimeEpisode (Franchise = Serie; synthetische …?ep=N-URLs; per Browser aufgelöste AES-128-HLS) |
resolve_provider(url) normalisiert die URL (z. B. /serie/stream/<slug> → /serie/<slug>, Trailing-Slash) und liefert den passenden Provider — oder wirft ValueError("Unsupported URL").
from mediaforge.providers import resolve_provider
prov = resolve_provider("https://aniworld.to/anime/stream/one-piece")
series = prov.series_cls(url="https://aniworld.to/anime/stream/one-piece")Lazy-ladende Properties (HTML wird erst beim ersten Zugriff geholt und gecacht):
title, title_cleaned, description, genres, release_year, poster_url, directors, actors, producer, country, age_rating, rating, imdb (IMDB-ID), mal_id (nur AniWorld), has_movies, seasons, season_count.
Hinweis Poster-URLs: Manche serienstream.to-Serien verwenden im Poster-Pfad eine Hash-ID statt des Serien-Slugs — die Extraktion ist entsprechend generalisiert.
AniworldSeason(url, series=None) — Properties u. a. season_number, episodes, are_movies (AniWorld-„Filme“-Staffel, wird z. B. von AutoSync übersprungen).
Kernklasse für Downloads:
ep = prov.episode_cls(
url="https://aniworld.to/anime/stream/x/staffel-1/episode-1",
selected_language="German Dub",
selected_provider="VOE",
selected_path="/pfad/optional", # optional
)
ep.download(cancel_event=event) # blockiert; bricht bei gesetztem Event ab-
provider_data(Property): Mapping(Audio, Subtitles) → {Hoster → Embed-URL}— Grundlage für Sprachprüfungen (z. B. in AutoSync) und die Hoster-Auswahl. -
download(): Extraktor aufrufen → Direktlink → yt-dlp/FFmpeg → Zieldatei gemäßMEDIAFORGE_NAMING_TEMPLATE; setzt Sprach-Tags (deu/eng/jpn) auf Audio-/Subtitle-Spuren. Der Pfad der fertigen Datei liegt danach in_episode_path. - Fortschritt wird global über
models/common/common.get_ffmpeg_progress()veröffentlicht (Phasedownload= yt-dlp,ffmpeg= Muxing) — die Queue-UI und/api/v1/statuslesen daraus.
Site-Sprach-Keys werden auf semantische Enums gemappt:
| Key | Label (aniworld) | Audio | Untertitel |
|---|---|---|---|
| 1 | German Dub | GERMAN | — |
| 2 | English Sub | JAPANESE | ENGLISH |
| 3 | German Sub | JAPANESE | GERMAN |
| 4 | English Dub | ENGLISH | — |
serienstream.to nutzt dieselben Keys mit eigenen Labels (1 = German Dub, 2 = English Dub, 3 = English Dub mit German Sub). Hilfs-Maps: LANG_KEY_MAP, LANG_LABELS, LANG_CODE_MAP (ISO-639-2 für FFmpeg-Tags) und die Inversen.
In config.py als kompilierte Regexe definiert (MEDIAFORGE_SERIES_PATTERN, …_SEASON_…, …_EPISODE_…, analog SERIENSTREAM_*, plus FILMPALAST_EPISODE_PATTERN in providers.py). AniWorld-Episode-URLs decken auch Filme ab (/filme/film-N).
🇬🇧 English
Users
- Installation
- Getting Started
- Migration from AniWorld
- Configuration
- Web UI
- Download System
- Download History
- AutoSync
- Calendar
- Library
- Authentication
- Notifications
- Integrations
- SyncPlay
- Anime4K Upscaling
- Encoding
- Docker
- Supported Sites
Developers