-
-
Notifications
You must be signed in to change notification settings - Fork 3
General
General settings control application behavior, logging, workers, metadata sources, and external API integration.
Application-wide settings for web interface, logging, workers, and performance.
-
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)
-
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
-
log_level: Logging verbosity (
debug,info,warning,error) -
db_log_level: Database query logging level (warning:
debugis 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 likeAmerica/New_York)
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)
-
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_disabled: Disable all scheduled tasks globally (default:
false) -
use_cron_instead_of_interval: Convert interval schedules to cron internally (default:
false)
-
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)
-
enable_file_watcher: Auto-reload config.toml on file changes (may use more RAM) (default:
false)
-
failed_indexer_block_time: Minutes to block indexer after error (default:
5)
-
disable_parser_string_match: Use regex-only parsing instead of string matching (default:
false)
Configure which metadata APIs to use for movies and TV series.
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)
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
- 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
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_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
musicbrainzseverely limits track-listing lookups
- Empty list enables all providers in default order:
| 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 |
- 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/")
- 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)
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)
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)
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)
-
ffprobe_path: Directory containing ffprobe executable (leave empty to use system PATH)
- Linux: Install via package manager (
apt-get install ffmpeg) - Windows: Download from https://www.gyan.dev/ffmpeg/builds/
- Executable must be named
ffprobeorffprobe.exe
- Linux: Install via package manager (
-
mediainfo_path: Path to MediaInfo executable (leave empty to use system PATH)
- Linux:
apt-get install mediainfo/dnf install mediainfo - Windows: Download installer from https://mediaarea.net/en/MediaInfo/Download/Windows
- macOS:
brew install media-info - Executable must be named
mediainfoormediainfo.exe
- Linux:
-
use_mediainfo: Use MediaInfo instead of ffprobe (default:
false) -
use_media_fallback: Use MediaInfo as fallback if ffprobe fails (default:
false)
-
metaflac_path: Path to metaflac executable for reading/writing FLAC audio tags (default:
"metaflac")- Linux:
apt-get install flac/dnf install flac(metaflac is part of the flac package) - Windows: Download from https://xiph.org/flac/download.html
- macOS:
brew install flac
- Linux:
-
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
-
unrar_path: Path to unrar executable (leave empty to use system PATH)
- Linux:
apt-get install unrar/dnf install unrar - Windows: Download from https://www.rarlab.com/download.htm
- macOS:
brew install rar
- Linux:
-
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
7zon Linux/macOS,7z.exeon Windows
- Linux:
-
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.exehandles ZIP); or use 7-Zip instead - macOS: Pre-installed
- Linux:
-
tar_path: Path to tar executable (leave empty to use system PATH)
- Linux/macOS: Pre-installed
- Windows: Built into Windows 10+ (
tar.exeinC:\Windows\System32\)
Configure the local IMDB database import.
-
indexed_types: Types to import into IMDB cache
- Options:
movie,tvMovie,short,tvSeries,tvEpisode,video,videoGame,tvSpecial,tvMiniSeries - Warning:
tvEpisodecreates a large cache file
- Options:
-
indexed_languages: Country codes for alternate titles to import (e.g.,
["DE", "US", "UK", '\N'])- Use
'\N'for entries with no language code
- Use
-
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)
[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[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- Start with Defaults: Most default values work well, adjust based on your system
- Worker Tuning: Increase workers on powerful systems, decrease on limited hardware
- Caching: Enable caching options for better performance at cost of RAM usage
- IMDB Database: Use full import for best metadata quality, limited import for less disk space
- API Keys: Free tiers available for TMDB and OMDB, Trakt requires OAuth setup
- Rate Limiting: Respect API limits to avoid being blocked — MusicBrainz enforces 1 req/sec strictly
- File Watcher: Useful for development, may use extra RAM in production
- Metadata Priority: Put fastest sources first for RSS scanning to minimize delay
- TLS Verification: Only disable certificate verification on trusted local networks (e.g., local Plex/Jellyfin with self-signed certs)
-
Audio Fingerprinting:
fpcalc_pathandacoustid_apikeyare both required for AcoustID music identification