- Add configurable title caching with fallback support - Cache titles for 30 minutes by default, with 24-hour fallback on API failures - Add --no-cache and --reset-cache CLI flags for cache control - Implement region-aware caching to handle geo-restricted content - Use SHA256 hashing for cache keys to handle complex title IDs - Add cache configuration variables to config system - Document new caching options in example config This caching system significantly reduces redundant API calls when debugging or modifying CLI parameters, improving both performance and reliability.
246 lines
7.1 KiB
YAML
246 lines
7.1 KiB
YAML
# Group or Username to postfix to the end of all download filenames following a dash
|
|
tag: user_tag
|
|
|
|
# Set terminal background color (custom option not in CONFIG.md)
|
|
set_terminal_bg: false
|
|
|
|
# Set file naming convention
|
|
# true for style - Prime.Suspect.S07E01.The.Final.Act.Part.One.1080p.ITV.WEB-DL.AAC2.0.H.264
|
|
# false for style - Prime Suspect S07E01 The Final Act - Part One
|
|
scene_naming: true
|
|
|
|
# Check for updates from GitHub repository on startup (default: true)
|
|
update_checks: true
|
|
|
|
# How often to check for updates, in hours (default: 24)
|
|
update_check_interval: 24
|
|
|
|
# Title caching configuration
|
|
# Cache title metadata to reduce redundant API calls
|
|
title_cache_enabled: true # Enable/disable title caching globally (default: true)
|
|
title_cache_time: 1800 # Cache duration in seconds (default: 1800 = 30 minutes)
|
|
title_cache_max_retention: 86400 # Maximum cache retention for fallback when API fails (default: 86400 = 24 hours)
|
|
|
|
# Muxing configuration
|
|
muxing:
|
|
set_title: false
|
|
|
|
# Login credentials for each Service
|
|
credentials:
|
|
# Direct credentials (no profile support)
|
|
EXAMPLE: email@example.com:password
|
|
|
|
# Per-profile credentials with default fallback
|
|
SERVICE_NAME:
|
|
default: default@email.com:password # Used when no -p/--profile is specified
|
|
profile1: user1@email.com:password1
|
|
profile2: user2@email.com:password2
|
|
|
|
# Per-profile credentials without default (requires -p/--profile)
|
|
SERVICE_NAME2:
|
|
john: john@example.com:johnspassword
|
|
jane: jane@example.com:janespassword
|
|
|
|
# You can also use list format for passwords with special characters
|
|
SERVICE_NAME3:
|
|
default: ["user@email.com", ":PasswordWith:Colons"]
|
|
|
|
# Override default directories used across unshackle
|
|
directories:
|
|
cache: Cache
|
|
cookies: Cookies
|
|
dcsl: DCSL # Device Certificate Status List
|
|
downloads: Downloads
|
|
logs: Logs
|
|
temp: Temp
|
|
wvds: WVDs
|
|
prds: PRDs
|
|
# Additional directories that can be configured:
|
|
# commands: Commands
|
|
services:
|
|
- /path/to/services
|
|
- /other/path/to/services
|
|
# vaults: Vaults
|
|
# fonts: Fonts
|
|
|
|
# Pre-define which Widevine or PlayReady device to use for each Service
|
|
cdm:
|
|
# Global default CDM device (fallback for all services/profiles)
|
|
default: WVD_1
|
|
|
|
# Direct service-specific CDM
|
|
DIFFERENT_EXAMPLE: PRD_1
|
|
|
|
# Per-profile CDM configuration
|
|
EXAMPLE:
|
|
john_sd: chromecdm_903_l3 # Profile 'john_sd' uses Chrome CDM L3
|
|
jane_uhd: nexus_5_l1 # Profile 'jane_uhd' uses Nexus 5 L1
|
|
default: generic_android_l3 # Default CDM for this service
|
|
|
|
# Use pywidevine Serve-compliant Remote CDMs
|
|
remote_cdm:
|
|
- name: "chrome"
|
|
device_name: chrome
|
|
device_type: CHROME
|
|
system_id: 27175
|
|
security_level: 3
|
|
host: https://domain.com/api
|
|
secret: secret_key
|
|
- name: "chrome-2"
|
|
device_name: chrome
|
|
device_type: CHROME
|
|
system_id: 26830
|
|
security_level: 3
|
|
host: https://domain-2.com/api
|
|
secret: secret_key
|
|
|
|
# Key Vaults store your obtained Content Encryption Keys (CEKs)
|
|
key_vaults:
|
|
- type: SQLite
|
|
name: Local
|
|
path: key_store.db
|
|
# Additional vault types:
|
|
# - type: API
|
|
# name: "Remote Vault"
|
|
# uri: "https://key-vault.example.com"
|
|
# token: "secret_token"
|
|
# - type: MySQL
|
|
# name: "MySQL Vault"
|
|
# host: "127.0.0.1"
|
|
# port: 3306
|
|
# database: vault
|
|
# username: user
|
|
# password: pass
|
|
|
|
# Choose what software to use to download data
|
|
downloader: aria2c
|
|
# Options: requests | aria2c | curl_impersonate | n_m3u8dl_re
|
|
# Can also be a mapping:
|
|
# downloader:
|
|
# NF: requests
|
|
# AMZN: n_m3u8dl_re
|
|
# DSNP: n_m3u8dl_re
|
|
# default: requests
|
|
|
|
# aria2c downloader configuration
|
|
aria2c:
|
|
max_concurrent_downloads: 4
|
|
max_connection_per_server: 3
|
|
split: 5
|
|
file_allocation: falloc # none | prealloc | falloc | trunc
|
|
|
|
# N_m3u8DL-RE downloader configuration
|
|
n_m3u8dl_re:
|
|
thread_count: 16
|
|
ad_keyword: "advertisement"
|
|
use_proxy: true
|
|
|
|
# curl_impersonate downloader configuration
|
|
curl_impersonate:
|
|
browser: chrome120
|
|
|
|
# Pre-define default options and switches of the dl command
|
|
dl:
|
|
best: true
|
|
sub_format: srt
|
|
downloads: 4
|
|
workers: 16
|
|
lang:
|
|
- en
|
|
- fr
|
|
EXAMPLE:
|
|
bitrate: CBR
|
|
|
|
# Chapter Name to use when exporting a Chapter without a Name
|
|
chapter_fallback_name: "Chapter {j:02}"
|
|
|
|
# Case-Insensitive dictionary of headers for all Services
|
|
headers:
|
|
Accept-Language: "en-US,en;q=0.8"
|
|
User-Agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36"
|
|
|
|
# Override default filenames used across unshackle
|
|
filenames:
|
|
log: "unshackle_{name}_{time}.log"
|
|
config: "config.yaml"
|
|
root_config: "unshackle.yaml"
|
|
chapters: "Chapters_{title}_{random}.txt"
|
|
subtitle: "Subtitle_{id}_{language}.srt"
|
|
|
|
# API key for The Movie Database (TMDB)
|
|
tmdb_api_key: ""
|
|
|
|
# conversion_method:
|
|
# - auto (default): Smart routing - subby for WebVTT/SAMI, standard for others
|
|
# - subby: Always use subby with advanced processing
|
|
# - pycaption: Use only pycaption library (no SubtitleEdit, no subby)
|
|
# - subtitleedit: Prefer SubtitleEdit when available, fall back to pycaption
|
|
subtitle:
|
|
conversion_method: auto
|
|
sdh_method: auto
|
|
|
|
# Configuration for pywidevine's serve functionality
|
|
serve:
|
|
users:
|
|
secret_key_for_user:
|
|
devices:
|
|
- generic_nexus_4464_l3
|
|
username: user
|
|
# devices:
|
|
# - '/path/to/device.wvd'
|
|
|
|
# Configuration data for each Service
|
|
services:
|
|
# Service-specific configuration goes here
|
|
# Profile-specific configurations can be nested under service names
|
|
|
|
# Example: with profile-specific device configs
|
|
EXAMPLE:
|
|
# Global service config
|
|
api_key: "service_api_key"
|
|
|
|
# Profile-specific device configurations
|
|
profiles:
|
|
john_sd:
|
|
device:
|
|
app_name: "AIV"
|
|
device_model: "SHIELD Android TV"
|
|
jane_uhd:
|
|
device:
|
|
app_name: "AIV"
|
|
device_model: "Fire TV Stick 4K"
|
|
|
|
# Example: Service with different regions per profile
|
|
SERVICE_NAME:
|
|
profiles:
|
|
us_account:
|
|
region: "US"
|
|
api_endpoint: "https://api.us.service.com"
|
|
uk_account:
|
|
region: "GB"
|
|
api_endpoint: "https://api.uk.service.com"
|
|
|
|
# External proxy provider services
|
|
proxy_providers:
|
|
nordvpn:
|
|
username: username_from_service_credentials
|
|
password: password_from_service_credentials
|
|
server_map:
|
|
- us: 12 # force US server #12 for US proxies
|
|
surfsharkvpn:
|
|
username: your_surfshark_service_username # Service credentials from https://my.surfshark.com/vpn/manual-setup/main/openvpn
|
|
password: your_surfshark_service_password # Service credentials (not your login password)
|
|
server_map:
|
|
- us: 3844 # force US server #3844 for US proxies
|
|
- gb: 2697 # force GB server #2697 for GB proxies
|
|
- au: 4621 # force AU server #4621 for AU proxies
|
|
basic:
|
|
GB:
|
|
- "socks5://username:password@bhx.socks.ipvanish.com:1080" # 1 (Birmingham)
|
|
- "socks5://username:password@gla.socks.ipvanish.com:1080" # 2 (Glasgow)
|
|
AU:
|
|
- "socks5://username:password@syd.socks.ipvanish.com:1080" # 1 (Sydney)
|
|
- "https://username:password@au-syd.prod.surfshark.com" # 2 (Sydney)
|
|
- "https://username:password@au-bne.prod.surfshark.com" # 3 (Brisbane)
|
|
BG: "https://username:password@bg-sof.prod.surfshark.com"
|