{% extends "base.html" %} {% block title %}{{ _('Integrations') }} — MediaForge{% endblock %} {% import "_settings_card_macro.html" as ext %} {% block styles %} {# sources.css carries the drag-and-drop order-row styles reused by the CineInfo provider-order list below (same rows as Settings › Sources). #} {% endblock %} {% block content %}
{# In-page floating side menu. Was hidden (navigation used to happen via the sidebar sub-menu); the menu rework moves that sub-navigation into the page as a vertical floating menu. switchIntegTab() (integrations.js) is unchanged. There is no "Modules" group here: this page places every module card on the Third Party tab, so the tab list is fixed. #}
{# No module tabs here on purpose: every settings_host="integrations" card goes to the "Third Party" tab above, whatever settings_tab the module asked for (registry.py's _FORCED_TABS / _placed_tab()). Modules that want a tab of their own use settings_host="notifications" or "monitoring", which do give them one. #}
Seerr
{{ _('Connect MediaForge with your Jellyseerr or Overseerr instance.') }}
{{ _('Configure') }}
Mediaplayer
{{ _('Automatic library refresh for Jellyfin & Plex after every download.') }}
{{ _('Configure') }}
CineInfo
{{ _('Shows streaming providers, genres and age rating via TMDB API.') }}
{{ _('Configure') }}
{{ _('Third Party') }}
{{ _('Connect external services like Crunchyroll & Fernsehserien.de.') }}
{{ _('Configure') }}
Jellyfin NFO Provider
{{ _('Automatic NFO metadata for downloaded media.') }}
{{ _('Configure') }}
SyncPlay
{{ _('Synchronized playback and party rooms with external instances.') }}
{{ _('Configure') }}
UpTime
{{ _('Monitor site availability, response times and scrapable sources.') }}
{{ _('Configure') }}

{{ _('Seerr Integration') }}

{{ _('Connect MediaForge with your Jellyseerr or Overseerr instance. Pending requests will appear under "Seerr Requests".') }}
{# Extensions attaching to this existing tab (settings_host="integrations", settings_tab="seerr") — see register_thirdparty() in registry.py. #} {% for card in get_settings_cards('integrations', 'seerr') %} {{ ext.render_settings_card(card) }} {% endfor %}

Mediaplayer Jellyfin / Plex

{{ _('After every completed download, a library refresh is automatically triggered on the selected server.') }}
{{ _('Service') }}
{{ _('Which media server should MediaForge use?') }}

MediaScan Plex / Jellyfin

{{ _('Detects whether a series is already in your Plex or Jellyfin library and shows the ✓ Present badge on the home page. Connection data is automatically taken from the Mediaplayer integration.') }}
{{ _('Enable') }}
{{ _('Presence detection via library instead of folder scan') }}
{% for card in get_settings_cards('integrations', 'mediaplayer') %} {{ ext.render_settings_card(card) }} {% endfor %}

CineInfo TMDB

{{ _('Shows streaming providers, genres and age rating on the home page and in the detail modal. Requires a free API key from') }} themoviedb.org. {{ _('Without a key, CineInfo is automatically inactive.') }}
{{ _('Advanced TMDB Search') }}
{{ _('Shows a menu item in the sidebar for advanced search including genres and keywords.') }}
{{ _('Calendar View') }}
{{ _('Shows a sidebar menu item with upcoming episode air dates for your AutoSync jobs based on TMDB data.') }}
{{ _('↳ Show Seerr requests in calendar') }}
{{ _('Adds open Seerr requests to the calendar based on their TMDB air/release dates.') }}
{{ _('↳ Show MediaScan series in calendar') }}
{{ _('Adds series from the MediaScan inventory comparison (Jellyfin/Plex) to the calendar.') }}
{{ _('↳ Show your own library in calendar') }}
{{ _('Takes the series from your MediaForge library and adds their upcoming episodes to the calendar. Works without Jellyfin/Plex.') }}
{{ _('Large libraries fill in gradually: the titles have to be matched against TMDB in the background first.') }}
{{ _('↳ Calendar refresh interval') }}
{{ _('How often to refresh existing calendar data from TMDB (in hours).') }}

{{ _('Display Options') }}

{{ _('Streaming Providers') }}
{{ _('1 provider on the card · all in the modal below the title') }}
{{ _('Source order') }}
{{ _('Which source gets to speak first about a title. A provider pill: the first source that knows the title shows its badge, the rest are skipped. A CineInfo source: the first one that knows a field fills it — TMDB always keeps what it already has. Modules that register a pill or a CineInfo source appear here automatically, marked "Module".') }}
{{ _('Age Rating (FSK)') }}
{{ _('FSK badge on the card and centered below the cover in the modal') }}
{{ _('TMDB Genres') }}
{{ _('Replaces the original site genres in the modal with TMDB genres (e.g. Action, Fantasy)') }}
{{ _('Rating') }}
{{ _('Shows the TMDB user rating as a badge next to the series title in the modal') }}
{{ _('Similar Series (Recommendations)') }}
{{ _('Shows a list of similar series based on TMDB below the episodes') }}
{{ _('Show trailer') }}
{{ _('Shows a YouTube trailer in the series detail modal (if available)') }}
{{ _('Show backdrop') }}
{{ _('Uses the TMDB backdrop as the header image of the title window') }}
{{ _('Hover Effects') }} Design
{{ _('These options control which info is shown when hovering over a series card on the home page.') }}
{{ _('Show rating') }}
{{ _('Shows the TMDB rating when hovering on the home page') }}
{{ _('Show genres') }}
{{ _('Shows the TMDB genres when hovering on the home page') }}
{{ _('Show age rating') }}
{{ _('Shows the age rating when hovering on the home page') }}
{{ _('Cache Options') }} {{ _('ATTENTION') }}
{{ _('Clear cache & reload') }}
{{ _('Deletes all stored TMDB data and restarts the preloading process. Also clears cached Fernsehserien.de provider lookups. Useful when info is outdated or after an API key change.') }}
{{ _('Metadata is preloaded in the background and cached in the database for 24 h. Fernsehserien.de provider lookups are cached for 24 h as well.') }}
{% for card in get_settings_cards('integrations', 'cineinfo') %} {{ ext.render_settings_card(card) }} {% endfor %}
{% for card in thirdparty_cards %} {{ ext.render_settings_card(card) }} {% endfor %}

Jellyfin NFO Provider Metadata

{{ _('Automatically generates NFO metadata for Jellyfin, Kodi and Plex after successful downloads. Requires a TMDB API key configured in CineInfo.') }}
{{ _('Enable Jellyfin NFO Generation') }}
{{ _('Enables writing NFO files after a download.') }}
{{ _('Create NFO for') }}
{{ _('Series (tvshow.nfo)') }}
{{ _('Season (season.nfo)') }}
{{ _('Episode (<name>.nfo)') }}
{{ _('Movie (movie.nfo / <name>.nfo)') }}
{{ _('Enable Movie Subfolders') }}
{{ _('Each movie gets its own subfolder (Synchronized with global download settings).') }}
{{ _('Include Metadata') }}
{{ _('Plot / Overview') }}
{{ _('Genres') }}
{{ _('Rating') }}
{{ _('Age Rating (FSK)') }}
{{ _('Cast / Crew') }}
{{ _('Trailer Link') }}
{{ _('Aired / Released Date') }}
{{ _('Studio / Network') }}

SyncPlay {{ _('Watch Together') }}

{{ _('Watch films and series together, perfectly in sync across phone, tablet and PC. Everyone connects to this instance — no third-party server. Invited guests can join via a link without an account.') }}
{{ _('Enable SyncPlay') }}
{{ _('Adds a SyncPlay entry to the sidebar and lets you start watch-together rooms.') }}
{% for card in get_settings_cards('integrations', 'syncplay') %} {{ ext.render_settings_card(card) }} {% endfor %}

UpTime {{ _('Monitoring') }}

{{ _('Continuously monitors your source sites — reachability and real-site verification, the same check used in the DNS diagnostics. When enabled, an "UpTime" entry appears in the sidebar with an Uptime-Kuma-style dashboard (online/offline, uptime percentage, response time, heartbeat history).') }}
{{ _('Enable UpTime monitoring') }}
{{ _('Adds an UpTime entry to the sidebar and starts the background monitor.') }}
{% for card in get_settings_cards('integrations', 'uptime') %} {{ ext.render_settings_card(card) }} {% endfor %}
{% endblock %}