### Configure Direct Indexer URL
Source: https://context7.com/pcjones/umlautadaptarr/llms.txt
Alternative setup where UmlautAdaptarr is used directly as the indexer URL instead of a proxy.
```bash
# Statt der originalen Indexer-URL:
# https://scenenzbs.com/api?apikey=INDEXER_KEY
# Verwende diese UmlautAdaptarr-URL:
# http://localhost:5005/_/scenenzbs.com/api?apikey=INDEXER_KEY
# Format: http://localhost:5005/{apiKey}/{indexer-domain}/api
# {apiKey} = "_" wenn kein API-Key konfiguriert, sonst der konfigurierte Key
# Beispiel Sonarr/Radarr Indexer-Konfiguration:
# URL: http://localhost:5005/_/scenenzbs.com
# API Path: /api
# API Key: (original Indexer API Key)
```
--------------------------------
### Capabilities (Caps) API
Source: https://context7.com/pcjones/umlautadaptarr/llms.txt
This endpoint forwards capabilities requests to the actual indexer, allowing *arr applications to query the indexer's supported features. The example response shows the structure for server information, searching capabilities, and categories.
```bash
curl "http://localhost:5005/{apiKey}/indexer.example.com/api?t=caps&apikey=INDEXER_API_KEY"
```
```xml
```
--------------------------------
### GET /titlelookup/
Source: https://context7.com/pcjones/umlautadaptarr/llms.txt
Retrieves the original title for a given renamed media title. Requires SETTINGS__EnableChangedTitleCache to be set to true in the configuration.
```APIDOC
## GET /titlelookup/
### Description
Resolves renamed media titles back to their original titles, useful for post-processing scripts.
### Method
GET
### Endpoint
/titlelookup/
### Query Parameters
- **changedTitle** (string) - Required - The renamed title string to look up.
### Response
#### Success Response (200)
- **changedTitle** (string) - The input title.
- **originalTitle** (string) - The resolved original title.
#### Response Example
{
"changedTitle": "Game.of.Thrones.S01E01.GERMAN.720p",
"originalTitle": "Game.of.Thrones.Das.Lied.von.Eis.und.Feuer.S01E01.GERMAN.720p"
}
```
--------------------------------
### TV Search API with Title
Source: https://context7.com/pcjones/umlautadaptarr/llms.txt
Search for TV series by title. UmlautAdaptarr handles German titles and umlauts, ensuring Sonarr can import the releases correctly. The example response shows the expected XML format.
```bash
curl "http://localhost:5005/{apiKey}/indexer.example.com/api?t=tvsearch&q=Game%20of%20Thrones&cat=5000&apikey=INDEXER_API_KEY"
```
```xml
Game.of.Thrones.S01E01.GERMAN.720p.BluRay.x264TV > HD
...
```
--------------------------------
### Konfiguration der appsettings.json
Source: https://context7.com/pcjones/umlautadaptarr/llms.txt
Definiert Kestrel-Endpunkte, API-Host-Einstellungen, Cache-Dauer und die Anbindung an Sonarr, Lidarr und Readarr.
```json
{
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://[::]:5005"
}
}
},
"Settings": {
"UserAgent": "UmlautAdaptarr/1.0",
"UmlautAdaptarrApiHost": "https://umlautadaptarr.pcjones.de/api/v1",
"IndexerRequestsCacheDurationInMinutes": 12,
"ApiKey": null,
"ProxyPort": 5006,
"EnableChangedTitleCache": false
},
"Sonarr": [
{
"Enabled": true,
"Name": "Sonarr",
"Host": "http://localhost:8989",
"ApiKey": "your_sonarr_api_key"
}
],
"Lidarr": {
"Enabled": false,
"Host": "http://localhost:8686",
"ApiKey": "your_lidarr_api_key"
},
"Readarr": {
"Enabled": false,
"Host": "http://localhost:8787",
"ApiKey": "your_readarr_api_key"
}
}
```
--------------------------------
### Indexer Proxy Configuration
Source: https://context7.com/pcjones/umlautadaptarr/llms.txt
Documentation on how to configure UmlautAdaptarr as an HTTP proxy or direct indexer URL for *arr applications.
```APIDOC
## Indexer Configuration
### Description
UmlautAdaptarr can be used as an HTTP proxy (via port 5006) or as a direct indexer URL (via port 5005) to intercept and process indexer requests.
### Direct Indexer URL Format
http://localhost:5005/{apiKey}/{indexer-domain}/api
- **{apiKey}**: Use "_" if no API key is configured, otherwise use the configured key.
- **{indexer-domain}**: The domain of the target indexer.
### Proxy Usage
Configure the application as an HTTP proxy in Prowlarr settings using the proxy port (default 5006).
```
--------------------------------
### Configure Multiple *arr Instances
Source: https://context7.com/pcjones/umlautadaptarr/llms.txt
Define multiple instances of the same *arr type by using indexed environment variables.
```yaml
# docker-compose.yml mit mehreren Sonarr-Instanzen
services:
umlautadaptarr:
image: pcjones/umlautadaptarr
environment:
# Erste Sonarr-Instanz
- SONARR__0__NAME=Sonarr HD
- SONARR__0__ENABLED=true
- SONARR__0__HOST=http://sonarr-hd:8989
- SONARR__0__APIKEY=api_key_hd
# Zweite Sonarr-Instanz
- SONARR__1__NAME=Sonarr 4K
- SONARR__1__ENABLED=true
- SONARR__1__HOST=http://sonarr-4k:8989
- SONARR__1__APIKEY=api_key_4k
```
--------------------------------
### TitleMatchingService Logik
Source: https://context7.com/pcjones/umlautadaptarr/llms.txt
Beschreibt die interne Verarbeitung von XML-Indexer-Antworten und die automatische Umbenennung von Titeln basierend auf Medientypen.
```csharp
// Interner Service-Aufruf
// Der Service verarbeitet XML-Content und benennt Titel automatisch um
// Unterstützte Medientypen und deren Kategorien:
// - "tv": Kategorie 5000, beginnt mit "TV" oder "Serien"
// - "movie": Kategorie 2000, beginnt mit "Movies" oder "Filme"
// - "audio": Kategorie 3000, beginnt mit "Audio" oder "Musik"
// - "book": Kategorie 7000/3030, enthält "Audiobook", "Hörbuch", "EBook", "Book"
// Beispiel der Titelverarbeitung:
// Input: "Game.of.Thrones.Das.Lied.von.Eis.und.Feuer.S01E01.GERMAN.720p"
// Output: "Game.of.Thrones.S01E01.GERMAN.720p"
//
// Input: "Frieren.Beyond.Journeys.End.S01E01.GERMAN.1080p"
// Output: "Frieren.Beyond.Journeys.End.S01E01.GERMAN.1080p" (bereits korrekt)
//
// Input: "Stephen.King.-.Es.German.2017.MP3"
// Output: "Stephen King - ES-[German.2017.MP3]"
```
--------------------------------
### Configure Docker Compose
Source: https://context7.com/pcjones/umlautadaptarr/llms.txt
Standard Docker Compose configuration for UmlautAdaptarr using environment variables for service integration.
```yaml
# docker-compose.yml
version: '3.8'
services:
umlautadaptarr:
image: pcjones/umlautadaptarr
restart: unless-stopped
ports:
- "5005:5005" # HTTP API Port
- "5006:5006" # Proxy Port für Prowlarr
environment:
- TZ=Europe/Berlin
# Sonarr Konfiguration (einzelne Instanz)
- SONARR__ENABLED=true
- SONARR__HOST=http://sonarr:8989
- SONARR__APIKEY=your_sonarr_api_key
# Radarr Konfiguration
- RADARR__ENABLED=true
- RADARR__HOST=http://radarr:7878
- RADARR__APIKEY=your_radarr_api_key
# Readarr Konfiguration
- READARR__ENABLED=true
- READARR__HOST=http://readarr:8787
- READARR__APIKEY=your_readarr_api_key
# Lidarr Konfiguration
- LIDARR__ENABLED=true
- LIDARR__HOST=http://lidarr:8686
- LIDARR__APIKEY=your_lidarr_api_key
# Erweiterte Einstellungen
- SETTINGS__IndexerRequestsCacheDurationInMinutes=12
- SETTINGS__EnableChangedTitleCache=false
- SETTINGS__ProxyPort=5006
```
--------------------------------
### CacheService Lookups
Source: https://context7.com/pcjones/umlautadaptarr/llms.txt
Zeigt die Cache-Struktur für SearchItems und Beispiele für den Abruf von Daten über den CacheService.
```csharp
// Cache-Struktur für verschiedene Medientypen:
// - {mediaType}_extid_{externalId}: SearchItem nach externer ID
// - {mediaType}_title_{normalizedTitle}: SearchItem nach normalisiertem Titel
// - {mediaType}_var_{normalizedVariation}: SearchItem nach Titelvariante
// Titel-Rename-Cache (für TitleLookup API):
// - title_rename_{changedTitle}: Original-Titel (12 Stunden Cache)
// Beispiel-Lookups:
// cacheService.GetSearchItemByExternalId("tv", "121361")
// cacheService.SearchItemByTitle("tv", "Game of Thrones Das Lied von Eis und Feuer")
// cacheService.GetOriginalTitleFromRenamed("Game.of.Thrones.S01E01")
```
--------------------------------
### Configure Prowlarr HTTP Proxy
Source: https://context7.com/pcjones/umlautadaptarr/llms.txt
Set up UmlautAdaptarr as an HTTP proxy in Prowlarr to enable parallel indexer requests.
```bash
# Prowlarr Proxy-Einstellungen:
# 1. Settings > Indexers > Neuer HTTP-Proxy
# - Name: UmlautAdaptarr HTTP Proxy
# - Host: umlautadaptarr (oder localhost/IP)
# - Port: 5006
# - Tag: umlautadaptarr
#
# 2. Für jeden Indexer:
# - Tag "umlautadaptarr" hinzufügen
# - URL von https:// zu http:// ändern
#
# Test der Proxy-Konfiguration
curl -x http://localhost:5006 "http://indexer.example.com/api?t=caps&apikey=INDEXER_KEY"
# Bei aktiviertem API-Key:
curl -x http://user:YOUR_API_KEY@localhost:5006 "http://indexer.example.com/api?t=caps&apikey=INDEXER_KEY"
```
--------------------------------
### Music Search API
Source: https://context7.com/pcjones/umlautadaptarr/llms.txt
Integrate with Lidarr for music downloads using this endpoint. Supports specific categories for audio and music.
```bash
curl "http://localhost:5005/{apiKey}/indexer.example.com/api?t=music&q=Artist%20Name&cat=3000&apikey=INDEXER_API_KEY"
```
```bash
curl "http://localhost:5005/{apiKey}/indexer.example.com/api?t=music&q=Album%20Title&cat=3010,3020&apikey=INDEXER_API_KEY"
```
--------------------------------
### Capabilities (Caps) API
Source: https://context7.com/pcjones/umlautadaptarr/llms.txt
The Caps endpoint forwards the Capabilities request to the actual indexer, allowing *arr applications to query the indexer's supported features.
```APIDOC
## Capabilities (Caps) API
### Description
Forwards the Capabilities request to the actual indexer, allowing *arr applications to query supported features.
### Method
GET
### Endpoint
`http://localhost:5005/{apiKey}/indexer.example.com/api`
### Query Parameters
- **t** (string) - Required - Specifies the type of request, should be `caps`.
- **apikey** (string) - Required - Your indexer API key.
### Request Example
```bash
# Capabilities-Abfrage
curl "http://localhost:5005/{apiKey}/indexer.example.com/api?t=caps&apikey=INDEXER_API_KEY"
```
### Response
#### Success Response (200)
Returns an XML document detailing the server version, title, and supported search capabilities (searching, categories) of the indexer.
#### Response Example
```xml
```
```
--------------------------------
### Movie Search API with Free Text
Source: https://context7.com/pcjones/umlautadaptarr/llms.txt
Perform a free text search for movies. UmlautAdaptarr ensures that the results are compatible with Radarr.
```bash
curl "http://localhost:5005/{apiKey}/indexer.example.com/api?t=movie&q=Inception&cat=2000&apikey=INDEXER_API_KEY"
```
--------------------------------
### Generic Search API
Source: https://context7.com/pcjones/umlautadaptarr/llms.txt
The Generic Search endpoint (t=search) allows for general search queries. UmlautAdaptarr automatically determines the media type based on the provided categories.
```bash
curl "http://localhost:5005/{apiKey}/indexer.example.com/api?t=search&q=Suchbegriff&cat=5000,7000&apikey=INDEXER_API_KEY"
```
--------------------------------
### Music Search API
Source: https://context7.com/pcjones/umlautadaptarr/llms.txt
The Music-Search endpoint integrates with Lidarr for music downloads. It supports specific categories for music and audio files.
```APIDOC
## Music Search API
### Description
Integrates with Lidarr for music downloads. Supports specific categories for music and audio files.
### Method
GET
### Endpoint
`http://localhost:5005/{apiKey}/indexer.example.com/api`
### Query Parameters
- **t** (string) - Required - Specifies the type of search, should be `music`.
- **q** (string) - Required - The artist or album title to search for.
- **cat** (string) - Required - Category IDs, e.g., `3000` (Audio/General), `3010` (24bit Lossless), `3020` (16bit Lossless), `3040` (Lossy), `3050` (MP3).
- **apikey** (string) - Required - Your indexer API key.
### Request Example
```bash
# Musik-Suche
curl "http://localhost:5005/{apiKey}/indexer.example.com/api?t=music&q=Artist%20Name&cat=3000&apikey=INDEXER_API_KEY"
# Musik-Suche mit spezifischer Kategorie (Audio/Musik)
curl "http://localhost:5005/{apiKey}/indexer.example.com/api?t=music&q=Album%20Title&cat=3010,3020&apikey=INDEXER_API_KEY"
```
```
--------------------------------
### Query Title-Lookup API
Source: https://context7.com/pcjones/umlautadaptarr/llms.txt
Use the title lookup endpoint to resolve renamed titles to their original versions. Requires SETTINGS__EnableChangedTitleCache to be set to true in the configuration.
```bash
# Title-Lookup aktivieren in der Konfiguration:
# SETTINGS__EnableChangedTitleCache=true
# Original-Titel abfragen
curl "http://localhost:5005/titlelookup/?changedTitle=Game.of.Thrones.S01E01.GERMAN.720p"
# Erfolgreiche Antwort:
# {
# "changedTitle": "Game.of.Thrones.S01E01.GERMAN.720p",
# "originalTitle": "Game.of.Thrones.Das.Lied.von.Eis.und.Feuer.S01E01.GERMAN.720p"
# }
# Fehler wenn nicht gefunden:
# 404: "Original title not found for 'Game.of.Thrones.S01E01.GERMAN.720p'."
# Fehler wenn Feature deaktiviert:
# 501: "Set SETTINGS__EnableChangedTitleCache to true to use this endpoint."
```
--------------------------------
### Book Search API
Source: https://context7.com/pcjones/umlautadaptarr/llms.txt
Use this endpoint for E-books and audiobooks with Readarr. It correctly maps author and title information and supports specific categories for books and audiobooks.
```bash
curl "http://localhost:5005/{apiKey}/indexer.example.com/api?t=book&q=Author%20-%20Book%20Title&cat=7000&apikey=INDEXER_API_KEY"
```
```bash
curl "http://localhost:5005/{apiKey}/indexer.example.com/api?t=book&q=Stephen%20King%20-%20ES&cat=3030&apikey=INDEXER_API_KEY"
```
--------------------------------
### Generic Search API
Source: https://context7.com/pcjones/umlautadaptarr/llms.txt
The Generic-Search endpoint (t=search) is used for general search queries. It automatically detects the media type based on the provided categories.
```APIDOC
## Generic Search API
### Description
Used for general search queries (`t=search`). Automatically detects media type based on categories.
### Method
GET
### Endpoint
`http://localhost:5005/{apiKey}/indexer.example.com/api`
### Query Parameters
- **t** (string) - Required - Specifies the type of search, should be `search`.
- **q** (string) - Required - The search term.
- **cat** (string) - Required - Category IDs. The system automatically maps these to media types (e.g., `7000` for Books, `5000` for TV, `2000` for Movies).
- **apikey** (string) - Required - Your indexer API key.
### Request Example
```bash
# Generische Suche mit automatischer Kategoriezuordnung
curl "http://localhost:5005/{apiKey}/indexer.example.com/api?t=search&q=Suchbegriff&cat=5000,7000&apikey=INDEXER_API_KEY"
```
### Category Mapping
- `cat=7000, 3030`: Books/Audiobooks (Readarr)
- `cat=3000, 3010, 3020`: Audio/Music (Lidarr)
- `cat=5000`: TV Series (Sonarr)
- `cat=2000`: Movies (Radarr)
```
--------------------------------
### TV Search API with TVDB ID
Source: https://context7.com/pcjones/umlautadaptarr/llms.txt
Use this endpoint to search for TV series using their TVDB ID. UmlautAdaptarr automatically resolves German titles and renames releases for Sonarr compatibility.
```bash
curl "http://localhost:5005/{apiKey}/indexer.example.com/api?t=tvsearch&tvdbid=121361&cat=5000&apikey=INDEXER_API_KEY"
```
--------------------------------
### TV Search API
Source: https://context7.com/pcjones/umlautadaptarr/llms.txt
The TV-Search endpoint allows searching for TV series using either the TVDB ID or the title. UmlautAdaptarr automatically resolves German titles and aliases, renaming found releases for Sonarr compatibility.
```APIDOC
## TV Search API
### Description
Allows searching for TV series using TVDB ID or title. UmlautAdaptarr resolves German titles and aliases, renaming releases for Sonarr compatibility.
### Method
GET
### Endpoint
`http://localhost:5005/{apiKey}/indexer.example.com/api`
### Query Parameters
- **t** (string) - Required - Specifies the type of search, should be `tvsearch`.
- **tvdbid** (integer) - Optional - The TVDB ID of the series.
- **q** (string) - Optional - The title of the series to search for.
- **cat** (string) - Required - Category ID, typically `5000` for TV.
- **apikey** (string) - Required - Your indexer API key.
### Request Example
```bash
# TV-Suche mit TVDB-ID
curl "http://localhost:5005/{apiKey}/indexer.example.com/api?t=tvsearch&tvdbid=121361&cat=5000&apikey=INDEXER_API_KEY"
# TV-Suche mit Titel
curl "http://localhost:5005/{apiKey}/indexer.example.com/api?t=tvsearch&q=Game%20of%20Thrones&cat=5000&apikey=INDEXER_API_KEY"
```
### Response
#### Success Response (200)
Returns an XML RSS feed containing search results. The `title` field of each item will be the renamed release title.
#### Response Example
```xml
Game.of.Thrones.S01E01.GERMAN.720p.BluRay.x264TV > HD
...
```
```
--------------------------------
### Movie Search API with IMDB ID
Source: https://context7.com/pcjones/umlautadaptarr/llms.txt
Search for movies using their IMDB ID. UmlautAdaptarr processes requests and modifies results for Radarr compatibility.
```bash
curl "http://localhost:5005/{apiKey}/indexer.example.com/api?t=movie&imdbid=tt1375666&cat=2000&apikey=INDEXER_API_KEY"
```
--------------------------------
### Movie Search API with TMDB ID
Source: https://context7.com/pcjones/umlautadaptarr/llms.txt
Search for movies using their TMDB ID. This endpoint ensures compatibility with Radarr by processing and modifying search results.
```bash
curl "http://localhost:5005/{apiKey}/indexer.example.com/api?t=movie&tmdbid=27205&cat=2000&apikey=INDEXER_API_KEY"
```
--------------------------------
### Book Search API
Source: https://context7.com/pcjones/umlautadaptarr/llms.txt
The Book-Search endpoint supports Readarr for e-books and audiobooks. It correctly maps author and title information for these media types.
```APIDOC
## Book Search API
### Description
Supports Readarr for e-books and audiobooks. Correctly maps author and title information.
### Method
GET
### Endpoint
`http://localhost:5005/{apiKey}/indexer.example.com/api`
### Query Parameters
- **t** (string) - Required - Specifies the type of search, should be `book`.
- **q** (string) - Required - The author and book title to search for, format: `Author - Book Title`.
- **cat** (string) - Required - Category IDs, e.g., `7000` (E-books), `3030` (Audiobooks).
- **apikey** (string) - Required - Your indexer API key.
### Request Example
```bash
# Buch-Suche
curl "http://localhost:5005/{apiKey}/indexer.example.com/api?t=book&q=Author%20-%20Book%20Title&cat=7000&apikey=INDEXER_API_KEY"
# Hörbuch-Suche
curl "http://localhost:5005/{apiKey}/indexer.example.com/api?t=book&q=Stephen%20King%20-%20ES&cat=3030&apikey=INDEXER_API_KEY"
```
### Note
Original titles like `Stephen.King.-.Es.German.2017.MP3` are processed to `Stephen King - ES-[German.2017.MP3]` for better compatibility.
```
--------------------------------
### Movie Search API
Source: https://context7.com/pcjones/umlautadaptarr/llms.txt
The Movie-Search endpoint supports searching for movies using IMDB ID, TMDB ID, or a free-text query. UmlautAdaptarr processes requests and modifies results for Radarr compatibility.
```APIDOC
## Movie Search API
### Description
Supports searching for movies using IMDB ID, TMDB ID, or free-text query. UmlautAdaptarr ensures results are compatible with Radarr.
### Method
GET
### Endpoint
`http://localhost:5005/{apiKey}/indexer.example.com/api`
### Query Parameters
- **t** (string) - Required - Specifies the type of search, should be `movie`.
- **imdbid** (string) - Optional - The IMDB ID of the movie.
- **tmdbid** (integer) - Optional - The TMDB ID of the movie.
- **q** (string) - Optional - The title of the movie to search for.
- **cat** (string) - Required - Category ID, typically `2000` for Movies.
- **apikey** (string) - Required - Your indexer API key.
### Request Example
```bash
# Film-Suche mit IMDB-ID
curl "http://localhost:5005/{apiKey}/indexer.example.com/api?t=movie&imdbid=tt1375666&cat=2000&apikey=INDEXER_API_KEY"
# Film-Suche mit TMDB-ID
curl "http://localhost:5005/{apiKey}/indexer.example.com/api?t=movie&tmdbid=27205&cat=2000&apikey=INDEXER_API_KEY"
# Freitext-Filmsuche
curl "http://localhost:5005/{apiKey}/indexer.example.com/api?t=movie&q=Inception&cat=2000&apikey=INDEXER_API_KEY"
```
```
=== COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.