Skip to content
Kellerman81 edited this page May 1, 2026 · 4 revisions

General Configuration

General settings control application behavior, logging, workers, metadata sources, and external API integration.

General Section

Application-wide settings for web interface, logging, workers, and performance.

Web Interface

  • webport: Port for web interface and API (as string, e.g., "9090")
  • webapikey: API authentication key for all API endpoints
  • web_portal_enabled: Enable/disable web interface (default: false)

HTTP

  • user_agent: User-Agent string sent with HTTP requests to external APIs (default: "go-media-downloader/2.0")
    • Some APIs (e.g., MusicBrainz) require a descriptive User-Agent for identification

Logging

  • log_level: Logging verbosity (debug, info, warning, error)
  • db_log_level: Database query logging level (warning: debug is very slow)
  • log_file_size: Maximum log file size in MB before rotation
  • log_file_count: Number of rotated log files to keep
  • log_compress: Compress old log files (default: false)
  • log_to_file_only: Disable console output, log to file only (default: false)
  • log_colorize: Enable colored console output (default: false)
  • time_format: Timestamp format (RFC3339, ISO8601, RFC1123, RFC822, RFC850)
  • time_zone: Timezone for timestamps (local, utc, or IANA timezone like America/New_York)

Worker Pools

Control parallel processing for different task types:

  • worker_metadata: Parallel metadata lookup jobs (default: 1)
  • worker_files: Parallel file scanning jobs (default: 1)
  • worker_parse: Parallel file parsing jobs (default: 1)
  • worker_search: Parallel search operations (default: 1)
  • worker_rss: Parallel RSS processing jobs (default: 1)
  • worker_indexer: Parallel indexer queries (default: 1)

Performance & Caching

  • cache_duration: Cache expiration time in hours (default: 12)
  • cache_auto_extend: Reset cache expiry on access (default: false)
  • use_indexed_cache: Enable O(1) hash-based cache lookups (default: false)
  • use_media_cache: RAM caching for media metadata (default: false)
  • use_file_cache: RAM caching for file listings (default: false)
  • use_history_cache: RAM caching for download history (default: false)
  • searcher_size: Initial buffer size for search results (default: 5000)
  • move_buffer_size_kb: File copy/move buffer size in KB (default: 1024)
  • use_file_buffer_copy: Enable buffered file copying (default: false)

Scheduler

  • scheduler_disabled: Disable all scheduled tasks globally (default: false)
  • use_cron_instead_of_interval: Convert interval schedules to cron internally (default: false)

Database

  • max_database_backups: Maximum number of database backup files to retain (default: 0, disabled)
  • database_backup_stop_tasks: Pause tasks during database backup (default: false)

File Operations

  • enable_file_watcher: Auto-reload config.toml on file changes (may use more RAM) (default: false)

Indexer Behavior

  • failed_indexer_block_time: Minutes to block indexer after error (default: 5)

Parsing

  • disable_parser_string_match: Use regex-only parsing instead of string matching (default: false)

Metadata Sources

Configure which metadata APIs to use for movies and TV series.

Movie Metadata Sources

Enable/disable different metadata providers:

  • movie_meta_source_imdb: Use local IMDB database (recommended: true)
  • movie_meta_source_tmdb: Use The Movie Database API (has most info, recommended: true)
  • movie_meta_source_omdb: Use Open Movie Database API (optional if IMDB enabled)
  • movie_meta_source_trakt: Use Trakt API (recommended: true)

Movie Alternate Titles

Enable/disable alternate title lookups:

  • movie_alternate_title_meta_source_imdb: IMDB alternate titles
  • movie_alternate_title_meta_source_tmdb: TMDB alternate titles (recommended)
  • movie_alternate_title_meta_source_omdb: OMDB alternate titles
  • movie_alternate_title_meta_source_trakt: Trakt alternate titles

Series Metadata Sources

  • serie_meta_source_tmdb: Use TMDB for series metadata
  • serie_meta_source_trakt: Use Trakt for series (has episode runtime, recommended)
  • serie_alternate_title_meta_source_imdb: IMDB alternate titles for series
  • serie_alternate_title_meta_source_trakt: Trakt alternate titles for series

Source Priority

Define which sources take precedence (first in array has highest priority):

  • movie_meta_source_priority: Priority for movie metadata (e.g., ["imdb", "tmdb", "trakt"])
  • movie_parse_meta_source_priority: Priority for file parsing (e.g., ["imdb", "tmdb"])
  • movie_rss_meta_source_priority: Priority for RSS scanning (keep minimal for speed, e.g., ["imdb"])

Music Metadata Sources

  • music_meta_source_priority: Active music metadata providers in priority order
    • Empty list enables all providers in default order: musicbrainz → acoustid → lastfm → discogs → deezer → theaudiodb → itunes
    • To disable a provider, omit it from the list (e.g., ["musicbrainz", "lastfm", "discogs"] skips AcoustID)
    • Warning: removing musicbrainz severely limits track-listing lookups

External API Configuration

Where to Get API Keys

Service Registration URL Notes
TMDb https://www.themoviedb.org/settings/api Free — requires account
OMDb https://www.omdbapi.com/apikey.aspx Free tier: 1,000 req/day
Trakt https://trakt.tv/oauth/applications/new Free — create an application, use http://localhost:9090/ as redirect URI
TVDB https://thetvdb.com/api-information Free — requires account only for lists
Last.fm https://www.last.fm/api/account/create Free — requires account
AcoustID https://acoustid.org/api-key Free — requires account; used with fpcalc for audio fingerprinting
Discogs https://www.discogs.com/settings/developers Free — generate a personal access token
Spotify https://developer.spotify.com/dashboard Requires Spotify Premium — create an application to get client ID/secret
Goodreads https://www.goodreads.com/api/keys Deprecated — API largely non-functional
TheAudioDB https://www.theaudiodb.com/api_guide.php Free public key available; paid key unlocks higher-res artwork
MusicBrainz (no key required) Set a descriptive user_agent — MusicBrainz identifies apps by User-Agent
OpenLibrary (no key required) Public API, no registration needed
Audnex (no key required) Community audiobook metadata service
iTunes (no key required) Apple public Search API
Deezer (no key required) Public API, no registration needed

API Keys

Movie / TV

  • omdb_apikey: Your OMDB API key (get from https://www.omdbapi.com)
  • themoviedb_apikey: Your TMDB API key (get from https://www.themoviedb.org)
  • trakt_client_id: Trakt API client ID
  • trakt_client_secret: Trakt API client secret
  • trakt_redirect_url: Redirect URL registered with your Trakt application (e.g., "http://localhost:9090/")

Music / Books / Audiobooks

  • goodreads_apikey: Goodreads API key (note: Goodreads API is deprecated)
  • discogs_token: Discogs personal access token (higher rate limits than unauthenticated)
  • spotify_client_id: Spotify Web API client ID (get from https://developer.spotify.com/dashboard)
  • spotify_client_secret: Spotify Web API client secret (pairs with spotify_client_id)
  • spotify_region: Spotify market filter — ISO 3166-1 alpha-2 country code (e.g., "US", "GB")
  • acoustid_apikey: AcoustID API key for audio fingerprint lookups (get from https://acoustid.org/api-key)
  • lastfm_apikey: Last.fm API key for charts and music metadata (get from https://www.last.fm/api/account/create)
  • theaudiodb_api_key: TheAudioDB API key (leave empty to use the free public key)

API Rate Limiting

Configure rate limits for external APIs:

Trakt:

  • trakt_limiter_seconds: Rate limit window in seconds (default: 1)
  • trakt_limiter_calls: Calls allowed per window (default: 1)

TVDB:

  • tvdb_limiter_seconds: Rate limit window in seconds (default: 1)
  • tvdb_limiter_calls: Calls allowed per window (default: 1)

TMDB:

  • tmdb_limiter_seconds: Rate limit window in seconds (default: 1)
  • tmdb_limiter_calls: Calls allowed per window (default: 1)

OMDB:

  • omdb_limiter_seconds: Rate limit window in seconds (default: 1)
  • omdb_limiter_calls: Calls allowed per window (default: 1)

TVmaze:

  • tvmaze_limiter_seconds: Rate limit window in seconds (default: 1)
  • tvmaze_limiter_calls: Calls allowed per window (default: 1)

Plex:

  • plex_limiter_seconds: Rate limit window in seconds (default: 1)
  • plex_limiter_calls: Calls allowed per window (default: 10)

Jellyfin:

  • jellyfin_limiter_seconds: Rate limit window in seconds (default: 1)
  • jellyfin_limiter_calls: Calls allowed per window (default: 10)

OpenLibrary:

  • openlibrary_limiter_seconds: Rate limit window in seconds (default: 1)
  • openlibrary_limiter_calls: Calls allowed per window (default: 5)

Goodreads:

  • goodreads_limiter_seconds: Rate limit window in seconds (default: 1)
  • goodreads_limiter_calls: Calls allowed per window (default: 1)

Audible:

  • audible_limiter_seconds: Rate limit window in seconds (default: 1)
  • audible_limiter_calls: Calls allowed per window (default: 5)

Audnex:

  • audnex_limiter_seconds: Rate limit window in seconds (default: 1)
  • audnex_limiter_calls: Calls allowed per window (default: 10)

MusicBrainz:

  • musicbrainz_limiter_seconds: Rate limit window in seconds (default: 1)
  • musicbrainz_limiter_calls: Calls allowed per window (default: 1)

Discogs:

  • discogs_limiter_seconds: Rate limit window in seconds (default: 60)
  • discogs_limiter_calls: Calls allowed per window (default: 60)

AcoustID:

  • acoustid_limiter_seconds: Rate limit window in seconds (default: 1)
  • acoustid_limiter_calls: Calls allowed per window (default: 3)

Last.fm:

  • lastfm_limiter_seconds: Rate limit window in seconds (default: 1)
  • lastfm_limiter_calls: Calls allowed per window (default: 5)

iTunes:

  • itunes_limiter_seconds: Rate limit window in seconds (default: 60)
  • itunes_limiter_calls: Calls allowed per window (default: 20)

TheAudioDB:

  • theaudiodb_limiter_seconds: Rate limit window in seconds (default: 1)
  • theaudiodb_limiter_calls: Calls allowed per window (default: 2)

Deezer:

  • deezer_limiter_seconds: Rate limit window in seconds (default: 5)
  • deezer_limiter_calls: Calls allowed per window (default: 50)

API Request Timeouts

Maximum time in seconds to wait for API responses:

  • omdb_timeout_seconds: OMDb request timeout (default: 10)
  • tmdb_timeout_seconds: TMDb request timeout (default: 10)
  • tvdb_timeout_seconds: TVDB request timeout (default: 10)
  • trakt_timeout_seconds: Trakt request timeout (default: 10)
  • tvmaze_timeout_seconds: TVmaze request timeout (default: 10)
  • plex_timeout_seconds: Plex request timeout (default: 30)
  • jellyfin_timeout_seconds: Jellyfin request timeout (default: 30)

TLS Verification

Disable SSL/TLS certificate verification per API (insecure — only use for trusted local networks or certificate issues):

  • tmdb_disable_tls_verify: Disable TLS verification for TMDb (default: false)
  • trakt_disable_tls_verify: Disable TLS verification for Trakt (default: false)
  • omdb_disable_tls_verify: Disable TLS verification for OMDb (default: false)
  • tvdb_disable_tls_verify: Disable TLS verification for TVDB (default: false)
  • tvmaze_disable_tls_verify: Disable TLS verification for TVmaze (default: false)
  • plex_disable_tls_verify: Disable TLS verification for Plex — useful for self-signed certs (default: false)
  • jellyfin_disable_tls_verify: Disable TLS verification for Jellyfin — useful for self-signed certs (default: false)

Media Analysis Tools

FFprobe/FFmpeg

  • ffprobe_path: Directory containing ffprobe executable (leave empty to use system PATH)

MediaInfo

  • mediainfo_path: Path to MediaInfo executable (leave empty to use system PATH)
  • use_mediainfo: Use MediaInfo instead of ffprobe (default: false)
  • use_media_fallback: Use MediaInfo as fallback if ffprobe fails (default: false)

Audio Tools

  • metaflac_path: Path to metaflac executable for reading/writing FLAC audio tags (default: "metaflac")
  • fpcalc_path: Path to fpcalc (chromaprint) executable for audio fingerprinting (default: "fpcalc")
    • Required for AcoustID audio identification
    • Linux: apt-get install libchromaprint-utils / dnf install chromaprint
    • Windows/macOS: Download from https://acoustid.org/chromaprint

Archive Extraction

  • unrar_path: Path to unrar executable (leave empty to use system PATH)
  • 7zip_path: Path to 7-Zip executable (leave empty to use system PATH)
    • Linux: apt-get install p7zip-full / dnf install p7zip p7zip-plugins
    • Windows: Download from https://www.7-zip.org/download.html
    • macOS: brew install p7zip
    • Executable is named 7z on Linux/macOS, 7z.exe on Windows
  • unzip_path: Path to unzip executable (leave empty to use system PATH)
    • Linux: apt-get install unzip / dnf install unzip (usually pre-installed)
    • Windows: Built into Windows 10+ (tar.exe handles ZIP); or use 7-Zip instead
    • macOS: Pre-installed
  • tar_path: Path to tar executable (leave empty to use system PATH)
    • Linux/macOS: Pre-installed
    • Windows: Built into Windows 10+ (tar.exe in C:\Windows\System32\)

IMDB Indexer Configuration

Configure the local IMDB database import.

Parameters

  • indexed_types: Types to import into IMDB cache
    • Options: movie, tvMovie, short, tvSeries, tvEpisode, video, videoGame, tvSpecial, tvMiniSeries
    • Warning: tvEpisode creates a large cache file
  • indexed_languages: Country codes for alternate titles to import (e.g., ["DE", "US", "UK", '\N'])
    • Use '\N' for entries with no language code
  • index_full: Import full dataset including votes/ratings (default: true)
    • true: Complete import with all metadata
    • false: Minimal import, many columns empty
  • imdbid_size: Expected database entry count for optimization (default: 6000000)
  • loop_size: Number of entries to cache in RAM during import (default: 1000000)
  • use_memory: Store database entirely in RAM for faster processing (default: false)
  • use_cache: Enable SQL query result caching (default: false)

Example

[imdbindexer]
indexed_types = ["movie", "tvMovie", "tvSeries"]
indexed_languages = ["DE", "US", "UK", '\N']
index_full = true
imdbid_size = 6000000
loop_size = 1000000
use_memory = false
use_cache = true

Complete Example

[general]
# Web Interface
webport = "9090"
webapikey = "your_secure_api_key_here"
web_portal_enabled = true

# HTTP
user_agent = "go-media-downloader/2.0"

# Logging
log_level = "info"
db_log_level = "warning"
log_file_size = 20
log_file_count = 10
log_compress = true
log_to_file_only = false
log_colorize = true
time_format = "RFC3339"
time_zone = "local"

# Workers
worker_metadata = 4
worker_files = 2
worker_parse = 2
worker_search = 2
worker_rss = 2
worker_indexer = 1

# Performance & Caching
cache_duration = 12
cache_auto_extend = false
use_indexed_cache = true
use_media_cache = true
use_file_cache = true
use_history_cache = true
searcher_size = 5000
move_buffer_size_kb = 1024
use_file_buffer_copy = false

# Scheduler
scheduler_disabled = false
use_cron_instead_of_interval = false

# Database
max_database_backups = 5
database_backup_stop_tasks = false

# File Operations
enable_file_watcher = true
disable_parser_string_match = false

# Indexer
failed_indexer_block_time = 5

# Movie Metadata Sources
movie_meta_source_imdb = true
movie_meta_source_tmdb = true
movie_meta_source_omdb = false
movie_meta_source_trakt = true

# Movie Alternate Titles
movie_alternate_title_meta_source_imdb = true
movie_alternate_title_meta_source_tmdb = true
movie_alternate_title_meta_source_omdb = false
movie_alternate_title_meta_source_trakt = true

# Series Metadata
serie_meta_source_tmdb = true
serie_meta_source_trakt = true
serie_alternate_title_meta_source_imdb = true
serie_alternate_title_meta_source_trakt = true

# Source Priority
movie_meta_source_priority = ["imdb", "tmdb", "trakt"]
movie_parse_meta_source_priority = ["imdb", "tmdb"]
movie_rss_meta_source_priority = ["imdb"]
music_meta_source_priority = ["musicbrainz", "acoustid", "lastfm", "discogs", "deezer"]

# Movie / TV API Keys
omdb_apikey = "your_omdb_key"
themoviedb_apikey = "your_tmdb_key"
trakt_client_id = "your_trakt_client_id"
trakt_client_secret = "your_trakt_client_secret"
trakt_redirect_url = "http://localhost:9090/"

# Music / Book / Audiobook API Keys
goodreads_apikey = ""
discogs_token = "your_discogs_token"
spotify_client_id = "your_spotify_client_id"
spotify_client_secret = "your_spotify_client_secret"
spotify_region = "US"
acoustid_apikey = "your_acoustid_key"
lastfm_apikey = "your_lastfm_key"
theaudiodb_api_key = ""

# API Rate Limiting
trakt_limiter_seconds = 1
trakt_limiter_calls = 20
tvdb_limiter_seconds = 1
tvdb_limiter_calls = 10
tmdb_limiter_seconds = 1
tmdb_limiter_calls = 20
omdb_limiter_seconds = 1
omdb_limiter_calls = 10
tvmaze_limiter_seconds = 1
tvmaze_limiter_calls = 10
plex_limiter_seconds = 1
plex_limiter_calls = 10
jellyfin_limiter_seconds = 1
jellyfin_limiter_calls = 10
musicbrainz_limiter_seconds = 1
musicbrainz_limiter_calls = 1
discogs_limiter_seconds = 60
discogs_limiter_calls = 60
acoustid_limiter_seconds = 1
acoustid_limiter_calls = 3
lastfm_limiter_seconds = 1
lastfm_limiter_calls = 5
itunes_limiter_seconds = 60
itunes_limiter_calls = 20
theaudiodb_limiter_seconds = 1
theaudiodb_limiter_calls = 2
deezer_limiter_seconds = 5
deezer_limiter_calls = 50

# API Request Timeouts (seconds)
omdb_timeout_seconds = 10
tmdb_timeout_seconds = 10
tvdb_timeout_seconds = 10
trakt_timeout_seconds = 10
tvmaze_timeout_seconds = 10
plex_timeout_seconds = 30
jellyfin_timeout_seconds = 30

# TLS Verification (false = secure, only set true for trusted local networks)
tmdb_disable_tls_verify = false
trakt_disable_tls_verify = false
omdb_disable_tls_verify = false
tvdb_disable_tls_verify = false
tvmaze_disable_tls_verify = false
plex_disable_tls_verify = false
jellyfin_disable_tls_verify = false

# Media Tools
ffprobe_path = ""
mediainfo_path = ""
use_mediainfo = false
use_media_fallback = true
metaflac_path = "metaflac"
fpcalc_path = "fpcalc"

# Archive Tools
unrar_path = ""
7zip_path = ""
unzip_path = ""
tar_path = ""

[imdbindexer]
indexed_types = ["movie", "tvMovie", "tvSeries"]
indexed_languages = ["DE", "US", "UK", '\N']
index_full = true
imdbid_size = 6000000
loop_size = 1000000
use_memory = false
use_cache = true

Tips

  1. Start with Defaults: Most default values work well, adjust based on your system
  2. Worker Tuning: Increase workers on powerful systems, decrease on limited hardware
  3. Caching: Enable caching options for better performance at cost of RAM usage
  4. IMDB Database: Use full import for best metadata quality, limited import for less disk space
  5. API Keys: Free tiers available for TMDB and OMDB, Trakt requires OAuth setup
  6. Rate Limiting: Respect API limits to avoid being blocked — MusicBrainz enforces 1 req/sec strictly
  7. File Watcher: Useful for development, may use extra RAM in production
  8. Metadata Priority: Put fastest sources first for RSS scanning to minimize delay
  9. TLS Verification: Only disable certificate verification on trusted local networks (e.g., local Plex/Jellyfin with self-signed certs)
  10. Audio Fingerprinting: fpcalc_path and acoustid_apikey are both required for AcoustID music identification

Clone this wiki locally