-
Notifications
You must be signed in to change notification settings - Fork 2
Modul API DE
🌐 English · Deutsch
Alles, was ein Modul bei MediaForge registrieren kann, an einer Stelle. Die
vollständige Referenz — mit einem lauffähigen Beispielmodul je Einstiegspunkt —
steht in
.examples/thirdparties/README.md
im Repository; diese Seite ist die Übersicht dazu.
Ein Modul ist ein Ordner unter web/thirdparties/<name>/ mit einer Funktion
register(app). Alles Folgende wird von dort aufgerufen.
| Funktion | Modul | Was sie hinzufügt |
|---|---|---|
register_thirdparty |
web.thirdparties.registry |
Das Modul selbst: Menüeintrag, Einstellungskarte, Dashboard-Widget, extra_settings-Felder, Ein/Aus-Schalter |
register_provider |
providers |
Eine Inhaltsquelle (Seite) mit eigenen Serien-/Staffel-/Episoden-Klassen |
register_search_source |
search |
Eine zusätzliche Quelle für die globale Suche |
register_hoster |
extractors |
Einen Hoster/Extractor, der eine Embed-URL zu einem Stream auflöst |
register_site_mirrors |
mirrors |
Mirror-Domains einer Seite, mit automatischem Failover |
register_cineinfo_source |
web.cineinfo.registry |
Eine Metadatenquelle neben TMDB |
register_monitor_site |
web.uptime_monitor |
Eine Karte auf dem UpTime-Dashboard, geprüft wie die eingebauten Seiten |
register_notification_channel |
web.thirdparties.registry |
Einen Benachrichtigungskanal neben Telegram/Pushover/Discord/ntfy |
register_event_hook |
web.thirdparties.registry |
Einen Callback auf App-Ereignisse (Download fertig, Queue-Eintrag fehlgeschlagen, …) |
register_background_worker |
web.thirdparties.registry |
Einen Worker-Thread, der mit dem Modul startet und stoppt |
register_backup_category |
web.backup |
Eigene Daten im Voll-/Teil-Backup |
register_sensitive_keys |
web.db |
Einstellungsschlüssel, die verschlüsselt gespeichert werden |
register_ui_pref_key |
web.db |
Eine UI-Einstellung pro Benutzerkonto |
register_restart_handler (web.restart) gehört nicht zu dieser API — die
Funktion ist Core-intern und wird nur von web/app.py aufgerufen.
Ein "secret"-Feld, ein Schlüssel in MODULE_SENSITIVE_SETTINGS und alles, was
an register_sensitive_keys() übergeben wird, liegt verschlüsselt in der
Datenbank, und die generische Settings-API liefert statt des Werts eine Maske
(registry.SECRET_MASK) — ein PUT, das die Maske zurückschickt, bedeutet
„unverändert". Das gilt für jeden Schlüssel, den MediaForge als sensibel
kennt, nicht nur für Felder mit type="secret": ein als normales Textfeld
angezeigtes Secret wird ebenfalls maskiert. Im Modul selbst ändert sich nichts,
get_setting() entschlüsselt wie gewohnt. Wer einen solchen Wert auf einer
eigenen Seite ausgibt, sollte es genauso halten — ein gespeichertes Secret
gehört nie ins HTML.
Statt eigenem CSS besser das vorhandene Vokabular nutzen:
-
Formular-Elemente (
forms.css):.chb-mainfür Checkboxen,.togglefür Ein/Aus-Schalter,.mf-segmented,.mf-multiselect,.mf-chip. -
Layout und Inhalt (
mf_components.css, global geladen):.mf-search,.mf-toolbar,.mf-poster-grid,.mf-timeline,.mf-progress,.mf-empty,.mf-pagination-bar. -
Farben (
variables.css): niemals Hex-Werte hart schreiben. Status-Pills nutzen das Paar--success+--success-bg(analog--warning,--error,--info); beide Hälften sind je Theme definiert. -
Escaping (
mf_escape.js, auf jeder Seite geladen):window.mfEscape()für alles, was ins HTML geht — quote-sicher, deckt also auch Attribute ab — undwindow.mfSafeUrl()fürhref/src. Keinen eigenen Escaper schreiben. -
Polling (
mf_poll.js):window.mfPoll(fn, ms)stattsetInterval, damit der Timer pausiert, solange der Tab versteckt ist.
Modul-Templates verwenden {{ _('...') }} wie der Core; ein Modul bringt
seinen eigenen Katalog unter <modul>/translations/<locale>/LC_MESSAGES/ mit.
Nach dem Bearbeiten einer .po muss pybabel compile laufen — ohne diesen
Schritt bleibt die Änderung zur Laufzeit wirkungslos.
🇬🇧 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
- Modules
- Theme Packs
- Backup
- Docker
- Supported Sites
Developers
🇩🇪 Deutsch
Benutzer
- Installation
- Erste Schritte
- Umzug von AniWorld
- Konfiguration
- Web-UI
- Download-System
- Download-Verlauf
- AutoSync
- Kalender
- Bibliothek
- Authentifizierung
- Benachrichtigungen
- Integrationen
- SyncPlay
- Anime4K-Upscaling
- Encoding
- Module
- Theme-Pakete
- Backup
- Docker
- Unterstützte Seiten
Entwickler