68 lines
2.3 KiB
YAML
68 lines
2.3 KiB
YAML
channel_url: "https://www.youtube.com/@Nostal-Vlad/videos"
|
|
|
|
languages:
|
|
es: any
|
|
es-419: any
|
|
en: any
|
|
prefer_manual: true
|
|
include_shorts: false
|
|
include_live: true
|
|
min_duration_sec: 30
|
|
|
|
# --------------------------------------------------------------------------
|
|
# Ritmo contra YouTube.
|
|
#
|
|
# El unico techo publicado que existe es el de la wiki de yt-dlp: una sesion
|
|
# sin cuenta aguanta ~300 videos/hora (~1000 peticiones/hora) antes del muro
|
|
# de bot. Google no documenta limites para acceso sin API, asi que ese numero
|
|
# es la referencia menos mala. Los valores de abajo apuntan deliberadamente
|
|
# por debajo.
|
|
#
|
|
# Cuentas: un video cuesta 3 peticiones a youtube.com
|
|
# 1. la pagina /watch
|
|
# 2. la llamada InnerTube /youtubei/v1/player (separada de la anterior por
|
|
# sleep_subrequests)
|
|
# 3. /api/timedtext, la transcripcion
|
|
# (la miniatura va a i.ytimg.com, que es CDN estatico y no cuenta contra esto)
|
|
#
|
|
# Esas 3 son irreducibles: se midio si se podia bajar de ahi restringiendo
|
|
# player_client o saltando la pagina /watch, y no se puede. Con solo
|
|
# web_safari, o con player_skip=webpage, yt-dlp devuelve CERO pistas de
|
|
# subtitulos y pierde duration/channel_id/tags. El default de yt-dlp
|
|
# (android_vr + web_safari, 2 peticiones) ya es el optimo. No re-litigar.
|
|
#
|
|
# Medido con estos valores: 12.4 s/video => ~870 peticiones/hora, ~290
|
|
# videos/hora. Por debajo del techo, con margen.
|
|
#
|
|
# Si vas con prisa y aceptas el riesgo, baja delay.min/max_seconds y
|
|
# min_request_interval. Si aun asi te topas con el muro, subelos:
|
|
# min_request_interval es el unico ajuste que aplica a la vez a los jobs y
|
|
# a los /api/tools/*, que corren fuera del JobManager.
|
|
# --------------------------------------------------------------------------
|
|
delay:
|
|
min_seconds: 5.0
|
|
max_seconds: 10.0
|
|
backoff_base: 2.0 # tras un rate-limit: min(2 * 2**n + jitter, cap)
|
|
backoff_cap: 60.0
|
|
throttle_threshold: 3 # 3 rate-limits seguidos y el job para
|
|
min_request_interval: 2.5
|
|
audio_rate_limit: 0
|
|
|
|
yt_dlp:
|
|
retries: 10
|
|
sleep_subrequests: 3.0 # -> sleep_interval_requests de yt-dlp
|
|
extractor_retries: 3
|
|
socket_timeout: 30.0
|
|
|
|
sync:
|
|
incremental: true
|
|
window: 30
|
|
max_window: 300
|
|
overlap: 3
|
|
|
|
database_path: "data/state.db"
|
|
output_dir: "data/markdown"
|
|
template_path: "templates/video.md.j2"
|
|
|
|
filename_template: "{upload_date}_{slug}"
|